gpt4 book ai didi

c# - 每个组的最大值 LINQ

转载 作者:行者123 更新时间:2023-12-02 05:37:19 24 4
gpt4 key购买 nike

千方百计,到处查找。我很沮丧,因为这真的很愚蠢。我想要每个组的最大值。我有以下记录。

ID  Custno  paydt                    rcvDt                  Mon    Tue
17 106505 2009-12-31 00:00:00.000 2012-07-11 07:15:04.523 100 3
18 106505 2009-12-31 00:00:00.000 2012-07-11 07:15:04.543 NULL NULL
19 106505 2010-12-31 00:00:00.000 2012-07-11 07:15:04.747 3 3
20 106505 2011-12-31 00:00:00.000 2012-07-11 07:15:04.827 3 3

结果应按 Custno 和 paydt 分组并返回最大 id

ID  Custno  paydt                    rcvDt                  Mon    Tue
18 106505 2009-12-31 00:00:00.000 2012-07-11 07:15:04.543 NULL NULL
19 106505 2010-12-31 00:00:00.000 2012-07-11 07:15:04.747 3 3
20 106505 2011-12-31 00:00:00.000 2012-07-11 07:15:04.827 3 3

尝试了不同的方式,其中一种在下面

var q = from x in MyTable.ToList()
group x by new { x.custno, x.paydt } into g
select new MyTable
{
custno= g.Key.custno,
paydt= g.Key.paydt,
ID = g.Max(b => b.ID),
rcvDt = g.OrderByDescending(a => a.ID).First().rcvDt ,
mon = g.OrderByDescending(a => a.ID).First().mon,
tue = g.OrderByDescending(a => a.ID).First().tue
};

感谢帮助!

最佳答案

您可以使用:

var q = MyTable.GroupBy(x => new {x.custno, x.paydt})
.Select(g => g.OrderByDescending(i => i.ID).First());

这组使用相同的逻辑。它执行与您使用的相同的分组,但随后在按 ID 降序对组进行排序后从每个组中选择第一条记录。

关于c# - 每个组的最大值 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11475397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com