我有一个列表,我想使其成为标题/详细列表。例如,该项目是:
商品{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
谢谢
尼克
答案 0 :(得分:1)
您应该如何在同一集合中组合GroupedItem
和Item
对象?您希望该收藏是哪种类型?
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();
您可以使用嵌套循环在表示层中随意显示每个组。