遍历包含另一个列表的列表,包含另一个列表的等

时间:2020-05-20 09:34:59

标签: c# .net-framework-version

因此,我有一个已定义的特定类的列表,假设IList<Element> A; Element类具有IList<Children> b;

B列表从文件中获取数据。 B可能有一个包含包含列表的列表的列表,等等...“递归” 或B可能只有一个列表 即B的嵌套列表可能会有所不同

我想遍历所有列表。有没有可能做到这一点?

1 个答案:

答案 0 :(得分:1)

天真方法只是堆栈递归-适用于许多常见情况:

SELECT "invoices".* 
FROM "invoices" 
INNER JOIN "items" 
ON "items"."invoice_id" = "invoices"."id" 
WHERE (items.status NOT IN (1, 2, 3))

对于很深的列表,此可能是的问题-堆栈可能会变得太大;在这种情况下,使用本地队列或堆栈并将 that 用于逻辑状态可以避免这种情况:

class A {
    List<B> _theList;
    void DoTheThing() {
       foreach(var b in _theList) b.DoTheThing();
    }
}
class B {
    List<B> _innerItems;
    void DoTheThing() {
        DoTheThingAtThisLevel();
        // and now recurse
        foreach(var inner in _innerItems) inner.DoTheThing();
    }
}

您可以根据深度优先或宽度优先使用堆栈vs队列。