我正在尝试编写一个linq查询,该查询将排除任何具有某个整数ID的子记录的记录。
我要查询的课程如下:
public class Group {
public ICollection<Item> { get; set; } // This is the child collection
}
public class Item {
public int Id { get; set; }
}
我的存储库查询方法是:
public ICollection<Group> Get(int itemId) {
return from c in Set.... // Set is an EF collection of all Groups
}
我想返回Groups
集合中没有Item
的所有Items
,Id
等于传递给该方法的itemId
不确定如何在Linq中最有效地写这个。
答案 0 :(得分:2)
这样可行(我正在使用方法语法,因为我更喜欢上面查询语法的方法语法而不是连接):
var result = db.Groups.Where(g => !g.Items.Any(i => i.Id == itemID)).ToList();
选择所有不包含Id
等于itemID
的项目的论坛。顺便提一下,我注意到你的代码中有Set
?这是否意味着您已事先获取所有组或其他内容(因此在内存中过滤)?最简单的方法是使用DbContext
并从那里访问您的表格。