我在Linq非常新,并且在使用什么来表现性能方面处于两难境地
var result = ResultLists().Where( c=> c.code == "abc").FirstOrDefault();
// vs.
var result = ResultLists().FirstOrDefault( c => c.code == "abc");
Run Code Online (Sandbox Code Playgroud)
Eni*_*ity 25
要么没事.
它们都懒惰地运行 - 如果源列表有一百万个项目,但第十个项目匹配则两者都只迭代来自源的10个项目.
性能应该几乎相同,任何差异都是微不足道的.
Dav*_*e C 11
第二个.在所有其他条件相同的情况下,第二种情况下的迭代器可以在找到匹配时立即停止,其中第一种必须找到所有匹配,然后选择第一种匹配.
很好的讨论,以上所有答案都是正确的。
我没有运行任何性能测试,而根据我的经验,FirstOrDefault() 有时比Where().FirstOrDefault() 更快并且优化。
我最近修复了内存溢出/性能问题(“神经网络算法”),修复方法是将Where(x->...).FirstOrDefault()更改为简单的FirstOrDefault(x->..)。
我忽略了编辑将Where(x->...).FirstOrDefault()更改为简单的FirstOrDefault(x->..)的建议。
所以我相信上述问题的正确答案是
第二种选择是所有情况下的最佳方法