あたり最大プロパティ値を持つレコードを選択:LINQ - 私はこのようなデータセットを持っているグループ
GroupName GroupValue MemberName MemberValue
'Group1' 1 'Member1' 1
'Group1' 1 'Member2' 2
'Group2' 2 'Member3' 3
'Group2' 2 'Member4' 2
'Group3' 2 'Member5' 4
'Group3' 2 'Member6' 1
私は何を選択することGroupName
あたりの最大MemberValue
を持つ行であるが、唯一のそれらのためGroupName
が最大のGroupValue
を持ち、それらをデリゲート関数に渡します。このように:
'Group2' 2 'Member3' 3
'Group3' 2 'Member5' 4
私はこのフォーマットを試してみたこれまでのところ
...
data.Where(maxGroupValue =>
maxGroupValue.GroupValue == data.Max(groupValue => groupValue.GroupValue))
.Select(FunctionThatTakesData)
...しかし、それはちょうど私のグループ2とグループ3のすべてのメンバーを示します。私はSelect()
の前にGroupBy()
を置こうとしましたが、出力がIGrouping<string, DataType>
に変わるので、FunctionThatTakesData()
は何をするのか分からず、別のWhere()
を実行して最大MemberValue
をフィルタリングできません。
このデータセットを適切にフィルタリングして機能に渡すにはどうすればよいですか?
ありがとう見つけることができます!今、各グループに同じ値を持つ複数のメンバーがあるとしましょう... 'First()'の代わりに 'Where()'を使うべきですか?その場合 – JAF
あなたは '.SelectMany(グラム=> g.GroupBy(R => r.MemberValue).OrderByDescending(SG => sg.Key)1次回は())'最後の行を交換したいと思います。 – juharr
Genius!ありがとうございました! – JAF