2

由于IEnumerable.Contains()方法不接受谓词作为参数,因此大多数人使用以下代码来检查是否存在与条件匹配的内容:

// ProductId is unique.
if (Products.Count(c => c.ProductId = 1234) == 1)
{
    // Products list contains product 1234.
}

此代码强制遍历每个产品并检查它是否匹配。真的没有必要这样做。

在查看 Linq-to-SQL 生成的 SQL 代码时,也存在同样的问题。发送一个select count(*) ... where ProductId = @p0语句,而不是if exists.

如何通过 Linq 查找集合是否包含与条件匹配的项目,而不必遍历集合中的每个元素并计算匹配的数量?

4

2 回答 2

14

你可以试试

if (Products.Any(c => c.ProductId = 1234))
{
//do stuff
}

不确定是否使用 if 存在,但您可以尝试查看发送的内容。

于 2010-07-19T09:08:14.797 回答
1

如果您尝试检查条件,可以使用以下代码

if(Products.Any(p => p.ProductID == 1234))
{
    //do sth
}

但是如果您想检查是否存在任何行而没有任何条件,例如 p.ProductID == 1234 您应该执行以下操作

if(Products.Any(p => p != null))
{
//do sth
}
于 2014-01-28T05:24:25.430 回答