如何使用linq对列表及其子项及其子项进行排序?

she*_*nku 3 c# linq

我有一个父母的孩子关系,如:

public class MyType {

    public IList<MyType> Children {get;set;}
    public int Order {get;set;}

}
Run Code Online (Sandbox Code Playgroud)

我想选择列表,以便每个级别都有序.

我可以轻松地为顶级做到这一点:

mylist.Children.OrderBy(x => x.Order)
Run Code Online (Sandbox Code Playgroud)

但是,我如何为每一个孩子做这件事?

最终结果将是包含其所有子项的列表或类型,并且子项(等等)都按顺序正确排序.

谢谢.

cuo*_*gle 6

您可以通过添加一个方法来执行递归顺序MyType:

public class MyType
{
    public IList<MyType> Childrens { get; set; }
    public int Order { get; set; }

    public void RecursiveOrder()
    {
        Childrens = Childrens.OrderBy(x => x.Order)
            .ToList();

        Childrens.ToList().ForEach(c => c.RecursiveOrder());
    }
} 
Run Code Online (Sandbox Code Playgroud)