Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#GroupBy生成平头明细表_C#_Linq - Fatal编程技术网

C#GroupBy生成平头明细表

C#GroupBy生成平头明细表,c#,linq,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

我有一个列表,我想把它做成一个标题/详细列表。例如,项目是:

项目{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

谢谢


Nick

您应该如何将
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();

您可以使用嵌套循环在表示层中以任何方式显示每个组。

这应该取决于UI元素,而不是编程列表中的数据没有标题/详细信息概念。。。另外,不使用
List
List
的情况下,如何将
Item
GroupedItem
放在同一个
列表中也不清楚。组合的列表将是列表。正如我在问题中提到的,我知道我可以生成嵌套的层次结构,但我需要一个扁平的层次结构。谢谢。@Nick:那么你打算如何使用
列表呢?