【发布时间】:2013-04-21 01:39:14
【问题描述】:
我有一个看起来像这样的方法:
public IEnumerable<Node> TraverseTree(Node root)
{
if(root.Children != null)
{
foreach(var item in root.Children)
TraverseTree(item);
}
yield return root;
}
当我这样做时:
var allItems = TraverseTree(someRootNode).ToList();
我只得到第一个节点。使用 IEnumerable 时不能使用递归吗?如果我可以使用 IEnumerable 这样我的 linq 查询不会完全执行,那就太好了。
编辑
对不起,我的 Node 类看起来像:
class Node
{
public Node Val;
public List<Node> Children = new List<Node>();
}
【问题讨论】:
-
我在stackoverflow.com/a/1043363/637142 找到了类似的解决方案,不过我更喜欢 aquaraga 解决方案 ;)
标签: c# linq recursion tree ienumerable