我知道这听起来像是一个重复的问题,但是我想要的答案与其他答案略有不同。从技术上讲,我想要使用Linq将此查询发送到数据库:
Select Count(*) = 3 From Products Where Id in (1,2,3)
请注意,如果所有id都存在,则此查询返回True,如果其中任何一个id不存在,则返回False。这有点像Products.Exists(p => ids.Contain(p.Id)),但所有id都应该存在。
Products.Exists(p => ids.Contain(p.Id))
cwdobuhd1#
试试这个:
int[] ids = new int[] { 1, 3, 9, 11, 125 }; bool res = ids.All(id => Products.Select(p => p.Id).Contains(id));
ttygqcqt2#
这并不是一个很好的答案,因为它将导致对数组中的每个id进行单独的查询。一个更好的解决方案是这样的:
var ids = new int[] { 1, 3, 9, 11, 125 }; var res = Products.Count(s => ids.Contains(s.Id)) == ids.Length;
这将导致只有一个使用IN子句的查询。
2条答案
按热度按时间cwdobuhd1#
试试这个:
ttygqcqt2#
这并不是一个很好的答案,因为它将导致对数组中的每个id进行单独的查询。
一个更好的解决方案是这样的:
这将导致只有一个使用IN子句的查询。