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

本文关键字:最大值 最小值 获取 linq 使用 | 更新日期: 2023-09-27 18:14:51

我有一个列表,它的值如下所示
使用Linq如何从COL1获得最小值,从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 221 1 56222 1 34

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

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

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)
                              });

可列举的使用。计算最大值的Max方法,如:

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();

如果您想避免对数据库进行两次调用,还有另一种方法:

var result = query.GroupBy(r => 0)
    .Select (grp => new 
    {
        Min = grp.Min(t => t.Col1), 
        Max = grp.Max(t => t.Col2)
    });

这将只在数据库中执行一次,并且它将返回两个结果。