我正在努力使用 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();
任何人都可以帮忙吗?
[编辑:我可以使用方法或查询语法,以更容易可视化流程为准]