Свести дерево (список списков) с помощью одного оператора?

Благодаря nHibernate, некоторые из структур данных, с которыми я работаю, представляют собой списки внутри списков внутри списков. Так, например, у меня есть объект данных под названием «категория», у которого есть свойство .Children, которое преобразуется в список категорий ... каждая из которых может иметь дочерние элементы ... и так далее, и так далее.

Мне нужно найти способ начать с категории верхнего уровня в этой структуре и получить список, массив или что-то подобное для всех дочерних элементов во всей структуре - так что все дочерние элементы всех дочерних элементов и т.д. в единый список.

Я уверен, что это можно сделать с помощью рекурсии, но я считаю, что с рекурсивным кодом сложно работать, и я убежден, что в .Net 4 должен быть более простой способ с использованием Linq или чего-то подобного - какие-нибудь предложения?

22
задан g t 25 February 2013 в 12:07
поделиться