
编辑:我现在没有时间修复下面的答案,但是鉴于问题中的其他信息,我怀疑您想保留a
Dictionary<int,HierarchicalNode>而不是a,
List<HierarchicalNode>以便您不依赖任何排序…
我会从一开始就忘记JSON表示,而将精力集中在构建层次结构的内存POCO表示中。为此,我将使用以下方法:
class HierarchicalNode{ private readonly List<HierarchicalNode> children = new List<HierarchicalNode>(); public List<HierarchicalNode> Children { get { return children; } } private readonly string name; public string Name { get { return name; } } private readonly int id; public int Id { get { return id; } } public HierarchicalNode(string name, int id) { this.name = name; this.id = id; }}然后像这样构建树:
// Make sure we get everything in a sensible order, parents before childrenvar query = context.Nodes.OrderBy(x => x.Depth);var root = new HierarchicalNode("Root", 0);foreach (var node in query){var current = root; foreach (string part = node.HierarchyPath.Split(new[] {'/'}, StringSplitOptions.RemoveEmptyEntries)) { int parsedPart = int.Parse(part); current = current.Children[parsedPart - 1]; } current.Children.Add(new HierarchicalNode(node.Name, node.Id));}欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)