Linq GroupBy多个领域

时间:2013-01-24 07:51:26

标签: linq group-by

我在列表中有以下项目:

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,我只想要AnIdanotherId中唯一的最新项目。因此,2013/01/10上的项目已删除,因为相同的MainDateAnIdAnotherId的项目的日期晚于项目日期。

我一直在尝试分组 MainDate然后 AnIdAnotherId以及 OrderByDescending < / em>然后选择每个组的第一个项目,但不要太过于linq,所以我在努力...

2 个答案:

答案 0 :(得分:3)

在查询表达式中使用的点符号中使用相同的anonymous类型:

var qry = cust.GroupBy(cm => new { cm.MainDate, cm.AnId ,  cm.AnotherId })

参见:
How to Group By multiple columns in LINQ ?
LINQ Group By Multiple fields -Syntax help

答案 1 :(得分:0)

使用lambda表达式可以编写

.GroupBy(e=>new { MainDate = e.MainDate, Id = e.AnId})