在mutilivel树中排序节点

时间:2014-04-03 10:32:17

标签: c# sorting data-structures

我有一个可以转换为树形结构的类。

public class Tree 
{
    public bool leaf { get; set; }
    public string Path { get; set; }
    public string Name { get; set; }
    public string ID { get; set; }
    public int SortOrder { get; set; }
    public bool expanded { get; set; }
    public List<Tree> children { get; set; }
    public Tree()
    {
        children = new List<Tree>();
    }
}

类中的children属性是包含所有子节点的树类列表。

每个节点都可以有多个子节点和子节点。每个节点都有sortOrder属性,我想用它来决定节点在任何给定级别出现的顺序。

对于叶属性为true的所有节点(树的底部的节点),需要根据SortOrder属性对该级别的-in进行排序。

如何使用所有级别的SortOrder属性对数据进行排序。

1 个答案:

答案 0 :(得分:0)

您可以通过将以下方法添加到Tree来递归排序叶节点:

public void OrderLeaves()
{
  children = children.Where(x => x.leaf).OrderBy(x => x.SortOrder).ToList();

  children.ToList().ForEach(c => c.OrderLeaves());
}