我正在使用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))