对多树中的节点进行排序

本文关键字:排序 节点 | 更新日期: 2023-09-27 17:56:17

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

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>();
    }
}

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

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

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

如何通过对所有级别使用排序顺序属性对数据进行排序。

对多树中的节点进行排序

您可以通过将

以下方法添加到Tree来递归排序叶节点:

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