找到没有任务的所有项目

时间:2013-01-18 18:54:50

标签: c# asp.net linq linq-to-sql

我正在使用LINQ to SQL。

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

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

以下是我查找项目所有任务的方法:

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

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

1 个答案:

答案 0 :(得分:3)

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

假设Project和Task之间存在FK关系,它是一对多的。 另外,让我们从所有任务中找到项目ID,然后找到那些ID以外的项目。

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