【发布时间】:2011-12-01 10:41:50
【问题描述】:
我贡献的开源项目 (OSP) 代码中有多个位置,必须确定集合中的元素是否满足特定条件。
我见过在某些情况下使用 LINQ 表达式 Any(lambda expression) 和在其他情况下使用 FirstOrDefault(lambda expression) != null,但从未考虑过。
我现在已经到了必须对从查询到数据库的集合进行一些迭代并想要优化运行时的地步。
所以我认为FirstOrDefault(lambda expression) != null 应该比Any(lambda expression) 快,对吧?
在FirstOrDefault(lambda expression) != null 的情况下,迭代(可能)在找到满足条件的元素时停止(更糟糕的情况是它遍历整个集合并返回null)。
在Any(lambda expression)的情况下,我想即使找到满足条件的元素,迭代也会继续到集合的末尾。
编辑:杰克逊波普提到并链接了相关的 MSDN 文章,上述情况不正确。
我的想法是正确的还是我遗漏了什么?
【问题讨论】:
-
“在
Any(lambda expression)的情况下,我想即使找到满足条件的元素,迭代也会持续到集合的末尾”。为什么? -
因为我没有阅读 Jackson Pope 提到的 MSDN 文章。大声笑
-
我也没有——我只是没有理由认为 LINQ 实现是荒谬的