我有一个对象层次结构(MasterNode -> ChildNodes),其中主节点和子节点属于同一类型,并且只有两个级别(顶级和子级)像这样('A' 是 D、E 和 F 的父级,' B' 是 G 的父级,等等)
A--+
| D
| E
| F
|
B--+
| G
|
C--+
H
I
假设我有一个MasterNodes作为父对象(A,B,C)的 IEnumerable,并且给定一个父对象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。我知道我可以定义自己的方法来做事,但我想要一些仅基于框架提供的方法的东西。