Najpierw spłaszczona kolekcja hierarchii obiektów przy użyciu LINQ

Mam hierarchię obiektów (MasterNode -> ChildNodes), gdzie węzły nadrzędne i podrzędne są tego samego typu, i są tylko dwa poziomy (najwyższy poziom i dzieci), takie jak ten („A” jest rodzicem D, E i F ” B 'jest rodzicem G itp.)

A--+
|  D
|  E
|  F
|
B--+
|  G
|
C--+
   H
   I

Przypuśćmy, że mamMasterNodes jako IEnumerable obiektów nadrzędnych (A, B, C) i nadany obiekt nadrzędnyX Mogę zdobyć IEnumerable swoich dzieciX.children

Wiem, że mogę wyliczyć wszystkie liście (węzły potomne) za pomocąWybierz Wiele metoda lub za pomocą

from parent in Masternodes
from child in parent.children
select child

To da mi tę sekwencję:

[D,E,F,G,H,I]

, ale nie o to proszę.

Co to jest zapytanie LINQ, aby uzyskać pierwszą sekwencję obiektów w kolekcji MasterNodes? (zwróć pierwszy rodzic, a następnie wszystkie jego dzieci, a następnie następny rodzic, a następnie wszystkie jego dzieci itp.)

Oczekiwany wynik powinien być taki jak ten:

[A,D,E,F,B,G,C,H,I]

AKTUALIZACJA:

Pytam o czyste LINQ .NET. Wiem, że mogę zdefiniować własne metody do robienia rzeczy, ale chcę coś, co opiera się tylko na metodach dostarczonych w ramach.

questionAnswers(4)

yourAnswerToTheQuestion