我有以下代码:
public class Navigation
{
public Navigation()
{
SubNavigation = new List<Navigation>();
}
public int Order { get; set; }
public string Text { get; set; }
public string RouteName { get; set; }
public IList<Navigation> SubNavigation { get; set; }
}
然后我有:
IList<Navigation> list = new List<Navigation>();
我用一些数据填充列表。并非所有项目都有子导航。目前导航只深入一层。
现在我想按顺序对每个项目的导航和子导航进行排序。我尝试了各种方法,但无论我尝试什么,我都无法在不重新创建对象的情况下对子导航进行排序。以下代码有效:
IList<Navigation> result = list.OrderBy(l => l.Order)
.Select(n => new Navigation
{
Order = n.Order,
Text = n.Text,
RouteName = n.RouteName,
SubNavigation = n.SubNavigation.OrderBy(s => s.Order).ToList()
}).ToList();
我不喜欢这种方法,我的问题是使用 LINQ 和方法语法是否有任何更清洁/更好的方法?