.net 如何在不获取计数的情况下检查db中是否存在id列表,并将其与列表计数进行比较

icomxhvb  于 2022-11-26  发布在  .NET
关注(0)|答案(2)|浏览(114)

我知道这听起来像是一个重复的问题,但是我想要的答案与其他答案略有不同。从技术上讲,我想要使用Linq将此查询发送到数据库:

Select Count(*) = 3 From Products Where Id in (1,2,3)

请注意,如果所有id都存在,则此查询返回True,如果其中任何一个id不存在,则返回False。这有点像Products.Exists(p => ids.Contain(p.Id)),但所有id都应该存在。

cwdobuhd

cwdobuhd1#

试试这个:

int[] ids = new int[] { 1, 3, 9, 11, 125 };
bool res = ids.All(id => Products.Select(p => p.Id).Contains(id));
ttygqcqt

ttygqcqt2#

这并不是一个很好的答案,因为它将导致对数组中的每个id进行单独的查询。
一个更好的解决方案是这样的:

var ids = new int[] { 1, 3, 9, 11, 125 };
var res = Products.Count(s => ids.Contains(s.Id)) == ids.Length;

这将导致只有一个使用IN子句的查询。

相关问题