因此,我有一个已定义的特定类的列表,假设IList<Element> A;
Element类具有IList<Children> b;
B列表从文件中获取数据。 B可能有一个包含包含列表的列表的列表,等等...“递归” 或B可能只有一个列表 即B的嵌套列表可能会有所不同
我想遍历所有列表。有没有可能做到这一点?
答案 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队列。