C# 在Linq中选择子集
我正在尝试编写一个linq查询,它将排除任何具有具有特定整数ID的子记录的记录 我要查询的类如下所示: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;}//这是子集合
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();