c# - 每组 LINQ 的最大值

标签 c# linq-to-entities

我已经尝试了所有可能的方法并到处查找。我很沮丧,因为这真的很愚蠢。我想要每组的最大值。我有以下记录。

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/

相关文章:

优化一次查询中的LinQ最大日期

c# - LINQ toEntity - 使用 IQueryable.Contains 过滤数据

c# - WPF 浏览器控件滚动位置

c# - lock语句使用什么类型的锁定机制

c# - Unity Networking 2d 游戏,ClientRpc 无法正常工作

c# - ASP.NET MVC 搜索页面 - Linq + EF4 上的整数 StartsWith

c# - 如何使用 EF 编写此 LEFT JOIN 查询

使用 SequenceEqual 可枚举方法的 LINQ to Entities 错误

c# - 结构指针

c# - 从 C sharp 代码执行 Jar 文件并获取返回值