Грубо говоря есть:
//_void по примеру собирает из базы child объекты
List<List<var>> example1 = _void(var);
List<List<var>> example2;
//Сменится на false когда функция _void вернет null (не осталось дочерних объектов)
while(true)
{
//Перебор с целью создать временное хранилище на 2 листе для цикла
foreach(List(var) list in example1)
{
foreach(var obj in list)
{
example2.Add(_void(obj));
}
}
example1 = example2;
example2.Clear();
}
И цикл уходит в вечность, от того что лист1 и лист2 отчищаются от последнего шага, от того не происходит foreach. Как поправить?
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1.addrange?view=netframework-4.7.2
// example1 = example2;
example1.AddRange(example2);
Но так example1 будет все время увеличиваться. Соответственно, внешний foreach будет состоять из все большего числа итераций.
example1.Clear();
example1.AddRange(example2);
Продвижение своими сайтами как стратегия роста и независимости