C# 在Linq中选择子集

C# 在Linq中选择子集,c#,entity-framework,linq,C#,Entity Framework,Linq,我正在尝试编写一个linq查询,它将排除任何具有具有特定整数ID的子记录的记录 我要查询的类如下所示: public class Group { public ICollection<Item> { get; set; } // This is the child collection } public class Item { public int Id { get; set; } } 公共类组{ 公共ICollection{get;set;}//这是子集合

我正在尝试编写一个linq查询,它将排除任何具有具有特定整数ID的子记录的记录

我要查询的类如下所示:

public class Group {
     public ICollection<Item> { get; set; } // This is the child collection
}

public class Item {
     public int Id { get; set; }
}
公共类组{
公共ICollection{get;set;}//这是子集合
}
公共类项目{
公共int Id{get;set;}
}
我的存储库查询方法是:

public ICollection<Group> Get(int itemId) {

      return from c in Set.... // Set is an EF collection of all Groups
}
public ICollection获取(int itemId){
从集合中的c返回....//Set是所有组的EF集合
}
我想返回所有
,这些组在其
集合中没有
,且
Id
等于传递给方法的
项Id

不确定如何在Linq中最有效地编写此代码。

这将起作用(我使用的是方法语法,但对于连接以外的任何东西,我更喜欢方法语法,而不是查询语法):


选择不包含
Id
等于
itemID
的项目的所有组。顺便说一句,我注意到你的代码中有
?这是否意味着您已经预先获取了所有组或其他内容(因此在内存中进行过滤)?最简单的方法是使用你的
DbContext
并从那里访问你的表格。

谢谢-大脑冻结日。集合来自DbContext,没有预加载—说来话长,但看起来像是泛型基类的结果。@Graham发生了,现在还早;-)(至少对我来说)
var result = db.Groups.Where(g => !g.Items.Any(i => i.Id == itemID)).ToList();