【发布时间】:2017-07-02 15:55:13
【问题描述】:
我有一个嵌套类:
class Item
{
public Int32 Id { get; set; }
public Int32 Pid { get; set; }
public String Name { get; set; }
public IEnumerable<Item> Children { get; set; }
}
现在我想将其展平,以便获得所有项目及其子项的名称。
这里的问题是我不知道这有多少层。
我看过了:
How to flatten nested objects with linq expression
如果你知道你有多少个关卡,那就太好了,而我不知道。
所以:
var r = from b in items
from c in b.Children
from d in c.Children
...
select new { b.Name, c = c.Name, d = d.Name ... };
几乎可以满足我的需要,但我不知道我需要深入多少层,而且如果一个项目没有子项,它也不会返回任何内容。
我想我需要一些递归例程,但我似乎找不到它。 我查看了 IEnumerable,但我还不太明白:)
所以任何帮助都会非常感谢。
【问题讨论】:
-
遗憾的是,Linq 解决方案效率如此之低...我建议不要使用它(就像 Eric Lippert 一样!)