我正在使用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;
}
现在我需要查找上述查询没有返回任何内容的所有项目。
答案 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))