Я имеющий вложенный класс:C# Свести вложен объект
class Item
{
public Int32 Id { get; set; }
public Int32 Pid { get; set; }
public String Name { get; set; }
public IEnumerable<Item> Children { get; set; }
}
Теперь я хочу, чтобы сгладить это, так что я могу получить имя всех предметов и их childeren.
Проблема в том, что я не знаю, сколько уровней в глубине этого.
Я посмотрел на:
How to flatten nested objects with linq expression
Это замечательно, если вы знаете, сколько уровней у вас есть, что я не делаю.
Итак:
var r = from b in items
from c in b.Children
from d in c.Children
...
select new { b.Name, c = c.Name, d = d.Name ... };
делает довольно много, что мне нужно, но я не знаю, сколько уровней в глубину, я должен идти, и если один элемент не имеет ребенка она ничего не возвращает ,
Мне понадобится рекурсивная рутина для этого, я думаю, но я не могу найти ее. Я посмотрел на IEnumerable, но я пока этого не понимаю :)
Так что любая помощь будет очень полезна.
Жаль, что решение Linq так ужасно неэффективно .. Я бы рекомендовал не использовать его (как это сделал Эрик Липперт!) –