迭代具有多层的嵌套列表

0 c# loops nested list nodes

考虑一下你有一个集合的场景,在这个集合中是特定的对象。这些对象也包含一个集合,并且在这些集合中包含更多相同的对象。它是一个具有许多层的嵌套集合。

List<WorkItemClassificationNode> items;
List<WorkItemClassificationNode> subItems = items.Children;
List<WorkItemClassificationNode> subSubItems = subItems.Children;
// etc
Run Code Online (Sandbox Code Playgroud)

我只想要一种方法来遍历每个层,以便对每个项目应用相同的逻辑,但我想不出一种直接的方法来做到这一点,而无需编写大量嵌套循环。

Sco*_*ham 5

您应该考虑编写递归方法。(互联网上有很多关于它的信息)

本质上,递归方法是一种调用自身的方法。

void DoThing(WorkItemClassificationNode node)
{
    if (node == null)
        return;

    //Do something with node

    if (node.Children == null)
        return;

    foreach(var child in node.Children)
        DoThing(child);
}
Run Code Online (Sandbox Code Playgroud)

请注意不断增长的堆栈