【发布时间】:2016-05-29 10:46:27
【问题描述】:
通常,找到具有最大值属性的元素我喜欢这样
var itemWithMaxPropValue = collection.OrderByDescending(x => x.Property).First();
但从性能的角度来看,这是一种好方法吗?也许我应该这样做?
var maxValOfProperty = collection.Max(x => x.Property);
var itemWithMaxPropValue = collection
.Where(x => x.Property == maxValueOfProperty).First();
【问题讨论】:
-
我会选择
Max,因为它是专门为它设计的...排序以找到最大值似乎太多了...另外,我不会使用Where来查找最大值,但Single -
OrderByDescending/ 快速排序应该是 O(n^2) 和Max是 O(n) 和WhereO(n) - 所以第二个方法应该更快 -
请参阅nuget.org/packages/MoreLinq.Source.MoreEnumerable.MaxBy 以了解内存使用(不会转换为 sql)
标签: c# performance linq collections