【发布时间】:2010-10-13 09:14:16
【问题描述】:
我在思考 linq 的计算方式,这让我想知道:
如果我写
var count = collection.Count(o => o.Category == 3);
这与以下有何不同:
var count = collection.Where(o => o.Category == 3).Count();
毕竟,IEnumerable<T>.Where() 将返回 IEnumerable<T>,它没有实现 Count 属性,因此后续的 Count() 实际上必须遍历项目以确定计数,这会导致花费额外的时间这。
我编写了一些快速测试代码来获取一些指标,但它们似乎随机地相互击败。测试代码我一开始就不放这里了,如果有人要求,我会加进去的。
那么,我错过了什么吗?
【问题讨论】:
-
它们应该实际上是相同的,因为列表只会被枚举一次。
标签: linq linq-to-objects performance