嗨,我有 dataTable,其中包含以下信息:
A1 B1 C1 A1 B1 C2 A1 B2 C3 A1 B2 C4 A2 B1 C5 A2 B1 C6 A2 B3 C7
我需要使用扩展方法(Select 和 GroupBy)来获取层次结构。
像这样的东西。
A1 |_ B1 | |_ C1 | |_ C2 | |_ B2 | |_ C3 |_ C4 A2 |_ B1 | |_ C5 | |_ C6 | |_ B3 |_ C7
嗨,我有 dataTable,其中包含以下信息:
A1 B1 C1 A1 B1 C2 A1 B2 C3 A1 B2 C4 A2 B1 C5 A2 B1 C6 A2 B3 C7
我需要使用扩展方法(Select 和 GroupBy)来获取层次结构。
像这样的东西。
A1 |_ B1 | |_ C1 | |_ C2 | |_ B2 | |_ C3 |_ C4 A2 |_ B1 | |_ C5 | |_ C6 | |_ B3 |_ C7
public class Node
{
public string Value { get; set; }
public IEnumerable<Node> Children { get; set; }
}
public IEnumerable<Node> BuildHierarchy(IEnumerable<Entry> entries)
{
return entries.GroupBy(entry => entry.A)
.Select(grouping =>
new Node
{
Value = grouping.Key,
Children = grouping.GroupBy(entry => entry.B)
.Select(grouping2 =>
new Node
{
Value = grouping2.Key,
Children = grouping2.Select(entry =>
new Node { Value = entry.C }
)
}
)
}
);
}