0

我在列表中有以下项目:

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之间唯一的最新项目。因此,2013/01/10 上的项目被删除,因为有一个相同的项目,并且日期晚于项目日期......AnIdanotherIdMainDateAnIdAnotherId

我一直在尝试Group By MainDateThen By AnIdOrderByDescendingAnotherId ,然后为每个组选择第一个项目,但对 linq 不太了解,所以我很挣扎......

4

2 回答 2

3

anonymous在点表示法中使用与查询表达式中相同的类型:

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

请参阅:
如何在 LINQ 中按多列分组?
LINQ 按多个字段分组 - 语法帮助

于 2013-01-24T08:02:07.557 回答
0

使用 lambda 表达式,您可以编写

.GroupBy(e=>new { MainDate = e.MainDate, Id = e.AnId})
于 2013-01-24T08:01:30.690 回答