C#GroupBy生成平头详细信息列表

时间:2019-10-22 14:45:02

标签: c# linq

我有一个列表,我想使其成为标题/详细列表。例如,该项目是:

商品{GroupName,ItemName,Price}

Fruit, Apple, 10
Fruit, Orange, 15
Fruit, Pear, 20
Drink, Soda, 5
Drink, Coke, 15

分组的数据结构: GroupedItem {GroupName,最小(价格),最大(价格)}

最终的标题/详细信息列表结合了GroupedItem和Item:

Fruit, 10, 20
Fruit, Apple, 10
Fruit, Orange, 15
Fruit, Pear, 20
Drink, 5, 15
Drink, Soda, 5
Drink, Coke, 15

在c#中,我认为我可以使用GroupBy生成组层次结构,然后使用2 ForEach展平结构(只需通过迭代所有标头和明细将它们全部添加到新列表中)。是否可以使用LinQ直接生成组合列表(List )?

谢谢

尼克

1 个答案:

答案 0 :(得分:1)

您应该如何在同一集合中组合GroupedItemItem对象?您希望该收藏是哪种类型?

GroupedItem类应具有一个属性来保存组中的项目:

GroupedItem[] = groupedItems
    .GroupBy(g => g.GroupName)
    .Select(g => new GroupedItem { GroupName = g.Key, Min = g.Min(x => x.Price), Max = g.Max(x => x.Price), Items = g.ToArray() })
    .SelectMany(g => g.Items)
    .ToArray();

您可以使用嵌套循环在表示层中随意显示每个组。