c# Dynamic.Linq - groupby,然后按条件选择

标签 c# linq


我以为这会很容易,但我真的很挣扎。

我有一个具有以下架构的表:
名称、日期、值

这就是我想要实现的目标:

  1. 按“名称”对所有行进行分组
  2. 从该组中选择“值”,“日期”是 最大的

第一名很容易通过 GroupBy("Name","it") 实现 但是,现在怎么办...?
如何查询分组结果???

谢谢大家。

最佳答案

我根据你的问题做出的假设之一是“日期是最大的”,你的意思是每个日期都是最新的。

var data = new List<Data>
                             {
                                 new Data() {Name = "one3", Date = new DateTime(2001, 11, 11), Value = 7},
                                 new Data() {Name = "one2", Date = new DateTime(2001, 11, 11), Value = 111},
                                 new Data() {Name = "one2", Date = new DateTime(2011, 11, 11), Value = 7},
                             };

var result = data.GroupBy(x => x.Name).Select(grouping => grouping.OrderByDescending(x => x.Date).Take(1).FirstOrDefault()).ToList();

我确信可能有更好的方法来执行 linq 查询,但我希望这至少能为您指明正确的方向:-)

关于c# Dynamic.Linq - groupby,然后按条件选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4638625/

相关文章:

c# - 您能解释一下此System.Collections.Generic.KeyNotFoundException吗?

c# - 正确的 LINQ where 子句

c# - 具有序列 id 的 Linq 汇总

linq - C#EF Linq按位问题

linq - NHibernate.Linq 和 MultiCriteria

c# - 求两条3D线段交点的算法

c# - 如何根据生日计算年龄

c# - 多重继承和 C#

c# - 在不将 WPF 控件添加到窗口的情况下测试它

c# - LINQ:无效的匿名类型成员声明符。匿名类型成员必须使用成员分配、简单名称或成员访问来声明