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 Group By Multiple フィールド - 構文ヘルプ

于 2013-01-24T08:02:07.557 に答える
0

あなたが書くことができるラムダ式を使用して

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