次の例のような形状のデータに対して C#/LINQ を使用して、二重のグループ化に苦労しています。データ層からの TickItems のリストから始めて、次のような形になりました。
TickItem {
ItemName: string;
QtyNeeded: int;
QtyFulfilled: int;
Category: string;
}
List<TickItem> items = new List<TickItem>();
items.Add("apple", 1, 0, "food");
items.Add("orange", 1, 1, "food");
items.Add("orange", 1, 0, "food");
items.Add("bicycle", 1, 1, "vehicle");
items.Add("apple", 1, 1, "food");
items.Add("apple", 1, 0, "food");
items.Add("car", 1, 1, "vehicle");
items.Add("truck", 1, 0, "vehicle");
items.Add("banana", 1, 0, "food");
このデータをカテゴリ別にグループ化し、各数値列の合計を最終結果にする必要があります。最終的には、次のような形にする必要があります。
{ "food": { "apple" : 3, 1 },
{ "banana" : 1, 0 },
{ "orange" : 2, 1 } },
{ "vehicle": { "bicycle": 1, 1 },
{ "car" : 1, 1 },
{ "truck" : 1, 0} }
各グループ化を個別に行うことはできましたが (ItemName によるグループ化とカテゴリによるグループ化)、単一の LINQ ステートメントで両方のグループ化を実行することはできませんでした。これまでの私のコード:
var groupListItemName = things.GroupBy(tiλ => tiλ.ItemName).ToList();
var groupListCategory = things.GroupBy(tiλ => tiλ.Category).ToList();
誰でも助けることができますか?
[編集: メソッドまたはクエリ構文のうち、プロセスを視覚化するのが簡単な方を使用できます]