我以为这会很容易,但我真的很挣扎。
我有一个具有以下架构的表:
名称、日期、值
这就是我想要实现的目标:
- 按“名称”对所有行进行分组
- 从该组中选择“值”,“日期”是 最大的
第一名很容易通过 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/