将平面列表转换为关系列表

本文关键字:列表 关系 转换 平面 | 更新日期: 2023-09-27 18:02:23

我在Foo结构体中有一个"flat"数据数组,它有成员parent和child:

struct Foo { string parent, string child }

它们可能有这样的数据:

"parent1", "child1"
"parent1", "child2"
"parent2", "child3"
"parent2", "child4"

我想把它们强制到一个"关系"结构中:

struct Bar { string parent, string[] children }

,并像这样填充:

"parent1"
    "child1"
    "child2"
"parent2"
    "child3"
    "child4"

我可以通过循环很好,但希望提高我的linq技能…我相信一定有办法的?Thanks (4.5 framework)

将平面列表转换为关系列表

Use GroupBy:

array.GroupBy(f => f.parent)
    .Select(g => new Bar { parent = g.Key, children = g.Select(f => f.child).ToArray() })
    .ToArray();