asp.net 使用linq获取最小值和最大值

u2nhd7ah  于 2023-02-14  发布在  .NET
关注(0)|答案(3)|浏览(238)

我有一个包含如下所示值的列表
使用Linq,我如何从COL1中获得所选ID的最小值,并从COL2中获得最大值?

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帮助我解决问题

lf5gs5x2

lf5gs5x21#

如果您想要列表中每个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)
                              });

使用Enumerable.Max方法计算最大值,如:

var max = yourList.Max(r=> r.Col1);

使用Enumerable.Min方法计算字段的最小值,如:

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

xqnpmsa82#

您可以排序,类似于:

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

xmd2e60i3#

如果要避免对数据库进行两次调用,还有另一种方法可以执行:

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

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

相关问题