Tag: hierarchy

深度优先使用LINQ展平对象层次结构的集合

我有一个对象层次结构(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] ,但这不是我要求的。 什么是LINQ查询以获取MasterNodes集合中对象的深度优先序列? (返回第一个父母,然后是所有孩子,然后是下一个父母,然后是所有孩子等等) 预期的结果应该是这样的序列: [A,D,E,F,B,G,C,H,I] 更新 : 我要求纯粹的.NET就绪LINQ。 我知道我可以定义自己的方法来做事,但我想要的东西只基于框架提供的方法。