【发布时间】:2010-07-19 09:04:08
【问题描述】:
由于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 查找集合中是否包含符合条件的项目,而不必遍历集合中的每个元素并计算匹配的数量?
【问题讨论】:
标签: c# linq linq-to-sql optimization exists