C# 使用linq获取最小值和最大值

C# 使用linq获取最小值和最大值,c#,asp.net,C#,Asp.net,我有一个列表,其值如下所示 使用Linq如何从COL1获取所选id的最小值,从COL2获取所选id的最大值 id COL1 COL2 ===================== 221 2 14 221 4 56 221 24 16 221 1 34 222 20 14 222 1 12 222 5

我有一个列表,其值如下所示
使用Linq如何从COL1获取所选id的最小值,从COL2获取所选id的最大值

id     COL1      COL2
=====================
221     2         14
221     4         56   
221    24         16   
221     1         34
222    20         14    
222     1         12 
222     5         34    
根据下面的列表,它应该显示id
221156
222134

帮助我

如果您想要列表中每个ID的最小值和最大值,那么您必须按
ID
分组,并相应地获得最大值和最小值,如:

var query = yourList.GroupBy(r=> r.ID)
                    .Select (grp => new 
                              {
                                ID = grp.Key, 
                                Min = grp.Min(t=> t.Col1), 
                                Max = grp.Max(t=> t.Col2)
                              });
使用方法计算最大值,如:

var max = yourList.Max(r=> r.Col1);
使用方法计算字段上的最小值,如:

var min = yourList.Min(r=> r.Col2);

您可以进行排序,例如:

var min = yourList.OrderBy(p => p.Col1).First();
var max = yourList.OrderByDescending(p => p.Col1).First();

OP提到所选id的
,因此您可能应该使用
Where
进行筛选。@VimalStan,是的,请再次阅读问题并修改答案使用});而不是}:在查询的末尾。是否希望每个ID的最小值和最大值?我认为排序成本是O(nx log(n)),而查找最大值只需要O(n)。因此,仅为查找最小值和最大值而排序并不是一个好的答案。当查询不必每秒运行时,排序性能可以忽略不计。这个答案比哈比卜的更有效。