我有一个看起来像这样的方法:
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>();
}