マスターノードと子ノードが同じタイプのオブジェクト階層 (MasterNode -> ChildNodes) があり、このような 2 つのレベル (トップレベルと子) しかありません (「A」は D、E、F の親です。 B' は G の親など)
A--+
| D
| E
| F
|
B--+
| G
|
C--+
H
I
親オブジェクト (A、B、C) の IEnumerable としてMasterNodesがあり、親オブジェクトXを指定すると、 X.childrenによってその子の IEnumerable を取得できるとします。
SelectManyメソッドまたは
from parent in Masternodes
from child in parent.children
select child
これにより、次のシーケンスが得られます。
[D,E,F,G,H,I]
、しかし、これは私が求めているものではありません。
MasterNodes コレクション内のオブジェクトの深さ優先シーケンスを取得する LINQ クエリは何ですか? (最初の親、次にそのすべての子、次に次の親、そのすべての子などを返します)
期待される結果は、次のようなシーケンスになります。
[A,D,E,F,B,G,C,H,I]
更新:
純粋な .NET 対応の LINQ を求めています。独自のメソッドを定義して実行できることはわかっていますが、フレームワークが提供するメソッドのみに基づいたものが必要です。