我在列表中有以下项目:
Date Amount AnId AnotherId MainDate
2013/01/10 1000 1 5 2013/01/12
2013/01/11 2000 2 5 2013/01/12
2013/01/15 4000 1 5 2013/01/12
我想使用 linq 返回以下内容:
Date Amount AnId AnotherId MainDate
2013/01/11 2000 2 5 2013/01/12
2013/01/15 4000 1 5 2013/01/12
即对于特定的MainDate
,我只想要跨AnId
和anotherId
独一无二的最新项目。因此,2013/01/10 上的项目被删除,因为同一MainDate
、AnId
和AnotherId
的项目的日期晚于项目日期......
我一直在尝试按MainDate
分组,然后按AnId
分组,AnotherId
按降序分组,然后为每个组选择第一项,但对 linq 不太了解,所以我在挣扎......
在点表示法中使用与在查询表达式中相同的anonymous
类型:
var qry = cust.GroupBy(cm => new { cm.MainDate, cm.AnId , cm.AnotherId })
指:
如何在 LINQ 中按多列分组?
LINQ 分组依据 多个字段 - 语法帮助
使用 lambda 表达式可以编写
.GroupBy(e=>new { MainDate = e.MainDate, Id = e.AnId})