私は、グループを形成し、いくつかの共通のクラスで複製データを再整列/フォーマットした後に複製を探したいというシナリオを持っています。C#Linq複数のプロパティでグループを作成し、結果のグループを単一のキー/プロパティにフォーマットするには?
例 -
var lst = new List<Test>
{
new Test{Category="A",Class="Class1",Id="101",Name="John"},
new Test{Category="B",Class="Class2",Id="102",Name="Peter"},
new Test{Category="A",Class="Class2",Id="103",Name="David"},
new Test{Category="C",Class="Class3",Id="104",Name="Julia"},
new Test{Category="D",Class="Class4",Id="105",Name="Ken"},
new Test{Category="A",Class="Class1",Id="106",Name="Robert"},
};
私は、グループ作成している - だから、
GroupItem1 - Category = "A" , Class = "Class1", Id = {101,106}
GroupItem2 - Category = "A" , Class = "Class2", Id = {103}
- 私は別のクラスとカテゴリーのための2グループ項目を結果
var group =
from c in lst
group c by new
{
c.Category,
c.Class
} into g
select new
{
Category = g.Key.Category,
Class = g.Key.Class,
Id = lst.Where(x => g.Key.Category == x.Category && g.Key.Class==x.Class)
.Select(y => y.Id).ToList()
};
を私は以下のような場合に結果を表示するという要件を持っていますその他のカテゴリ -
Category = "A", Class = "Class1 OR SomeCommonClass", Id = {101,106,103}
最小限のコードと最適化されたロジックでこの結果を達成できますか?
優秀な質問:
Join
はIEnumerable
拡張メソッドである。 – NetMage