C# 根据属性的最大值对列表进行排序的简单方法
我有一个从连接表中得到的列表,这个列表有低范围值和高范围值,目标是选择具有最大低范围值的行,在下面的示例中 我选择15.5,因为它具有最高的下限值C# 根据属性的最大值对列表进行排序的简单方法,c#,linq,C#,Linq,我有一个从连接表中得到的列表,这个列表有低范围值和高范围值,目标是选择具有最大低范围值的行,在下面的示例中 我选择15.5,因为它具有最高的下限值 Rate LowRange HighRange --------------------------------------- 12.5 300000 0 15.5 1500000 300001 17.5 NULL 1
Rate LowRange HighRange
---------------------------------------
12.5 300000 0
15.5 1500000 300001
17.5 NULL 1500001
任何关于如何使用linq,c实现这一点的想法都会有所帮助您可以在
低范围上按降序排序
,然后先获取
list.OrderByDescending(x => x.LowRange).First();
您可以在low-range
上OrderByDescending
,然后首先获取
list.OrderByDescending(x => x.LowRange).First();
@库恩格尔有最简单的答案
Linq有一个很好的扩展(最初由Jon Skeet作为的一部分编写,或者也被称为MaxBy()
),它可以让您这样做:
var max = list.MaxBy(item => item.LowRange);
这更有效,因为它只有O(N),而orderbydecenting()
是O(N*Log(N))
@CuongLe有最简单的答案
Linq有一个很好的扩展(最初由Jon Skeet作为的一部分编写,或者也被称为MaxBy()
),它可以让您这样做:
var max = list.MaxBy(item => item.LowRange);
这更有效,因为它只有O(N),而orderbydecenting()
是O(N*Log(N))
谢谢你的快速回复:)让我试试你的快速回复:)让我试试Matthew Watson和stackoverflow谢谢Matthew Watson和stackoverflow