Gracias a nHibernate, algunas de las estructuras de datos con las que trabajo son listas dentro de listas dentro de listas. Entonces, por ejemplo, tengo un objeto de datos llamado "categoría" que tiene una propiedad .Children que se resuelve en una lista de categorías ... cada una de las cuales puede tener hijos ... y así sucesivamente.¿Acoplar un árbol (lista de listas) con una sola declaración?
Necesito encontrar una manera de comenzar en una categoría de nivel superior en esta estructura y obtener una lista o matriz o algo similar de todos los niños en toda la estructura, así que todos los hijos de todos los niños, etc. aplanado en una sola lista.
Estoy seguro de que se puede hacer con recursividad, pero me resulta difícil trabajar con el código recursivo, y estoy convencido de que debe ser una forma más directa en .Net 4 utilizando Linq o somesuch, ¿alguna sugerencia?
El aplanamiento de un árbol parece inherentemente recursivo. No creo que haya una sola forma de declaración para aplanar un árbol, incluso con LINQ. ¿Aceptarías una respuesta recursiva? – climbage
Ciertamente. Es solo una de esas cosas que parece que debería haber una respuesta "fácil".Linq "selectMany" aplanará dos niveles de un árbol, pero el problema es que no tengo forma de saber cuántos niveles tengo en mi objeto cuando comienzo. Así que supongo que la recursión es la única forma de hacerlo. –