找到所有没有任务的项目

本文关键字:项目 任务 有没有 | 更新日期: 2023-09-27 17:54:46

我正在使用LINQ to SQL。

我有一个Projects表。我也有一个任务表。任务可以有一个项目。

我想要一个可以返回没有任何任务的项目列表的查询。

下面是我如何找到一个项目的所有任务:

   public static IEnumerable<Task> GetAllByProject(int? projectID)
   {
         KezberPMDBDataContext db = new KezberPMDBDataContext();
         return from p in db.Tasks
                where p.ProjectID == projectID
                select p;
   }

现在我需要找到上面查询不返回任何内容的所有项目。

找到所有没有任务的项目

return db.Projects.Where(p=>!p.Tasks.Any())

假设项目和任务之间存在FK关系,并且是一对多关系。否则,让我们从所有任务中找到项目id,然后找到这些id之外的项目。

var taskProjectIds = db.Tasks.Select(t=>t.ProjectId).Distinct();
return db.Projects.Where(p=>!taskProjectIds.Any(p.Id))