我在列表中有以下项目:
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
以及 OrderByDescending < / em>然后选择每个组的第一个项目,但不要太过于linq,所以我在努力...
答案 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})