我必须从平面列表中构建一个n级层次结构列表。
我试图在这个答案中使用解决方案:https://stackoverflow.com/a/25532561但我未能得到正确的结果。
这是我的对象结构:
public class Group {
public string Id { get; set; }
public string Name { get; set; }
public string ParentId { get; set; }
public List<Group> Children { get; set; }
}
public List<Group> BuildGroupHierarchy(List<Group> groups)
{
var lookup = groups.Where(x => x.ParentId != null).ToList().ToLookup(c => c.ParentId);
List<string> idsToRemove = new List<string>();
foreach (var c in groups)
{
if (c.Children == null) c.Children = new List<Group>();
if (lookup.Contains(c.Id))
c.Children.AddRange(lookup[c.Id].ToList());
}
return groups;
}
这是平面结构中存在的虚拟层次结构:
但这是我得到的,基本上是第二级重复: