次のコードがあります。
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>();
リストにいくつかのデータを入力します。すべてのアイテムにサブ ナビゲーションがあるわけではありません。現在、ナビゲーションは 1 レベルの深さしかありません。
ここで、各アイテムのナビゲーションとサブナビゲーションの両方を順番に並べ替えたいと思います。私はあらゆる種類のアプローチを試しましたが、何を試しても、オブジェクトを再作成しないとサブナビゲーションを並べ替えることができませんでした。以下のコードが機能します。
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とメソッド構文を使用してこれを行うためのよりクリーンな/より良い方法があるかどうかです?