次の基本構造を持つオブジェクトのリストがあります。
class Person
{
public int ID {get; set;}
public bool ShowChildren {get; set;}
public int ParentID {get; set;}
// ...many other properties...
}
ID 順に並んだ Person 親クラスのリストを返す必要があります。ShowChildren フラグが有効になっている場合は、親の下にある子も ID 順に並べて返します。
これは 1 レベルのみの深さです。つまり、子には子がありません。
すべての親を提供する linq ステートメントを作成できますが、親のフラグが有効になっているときに、並べ替えられた子も含める方法に行き詰まっています。
var People = PersonList
.Where(x => x.ParentID == 0)
.Orderby(x => x.ID)
.ToList();