基于属性的最大值对列表进行排序的简单方法

时间:2013-05-15 09:54:35

标签: c# linq

我有一个从连接表中获得的列表,此列表具有低范围和高范围值,目标是选择具有最大LowRange值的行,在下面的示例中,

我选择15.5的速率,因为它具有最高的低范围val

    Rate        LowRange    HighRange
    ---------------------------------------
    12.5        300000      0
    15.5        1500000     300001
    17.5        NULL        1500001

任何想法如何使用linq实现这一点,c#会有所帮助

2 个答案:

答案 0 :(得分:2)

您可以OrderByDescending LowRange然后获取First

 list.OrderByDescending(x => x.LowRange).First();

答案 1 :(得分:2)

@CuongLe有最简单的答案。

Linq有一个很好的扩展(最初由Jon Skeet作为MoreLinq的一部分编写,或see here)称为MaxBy(),可以让你这样做:

var max = list.MaxBy(item => item.LowRange);

效率更高,因为它只有O(N),而OrderByDecending()O(N*Log(n))