Dank nHibernate sind einige der Datenstrukturen, mit denen ich arbeite, Listen innerhalb von Listen innerhalb von Listen. So habe ich zum Beispiel ein Datenobjekt namens "category", das eine .Children -Eigenschaft hat, die in eine Liste von Kategorien aufgelöst wird ... von denen jede Kinder haben kann ... und so weiter und so weiter.Einen Baum (Liste von Listen) mit einer Aussage abflachen?
Ich muss einen Weg finden, um in einer Top-Level-Kategorie in dieser Struktur zu beginnen und eine Liste oder Array oder etwas Ähnliches von allen Kindern in der gesamten Struktur zu bekommen - also alle Kinder aller Kinder usw. etc, abgeflacht in eine einzige Liste.
Ich bin mir sicher, dass es mit Rekursion getan werden kann, aber ich finde rekursive Code einen Schmerz zu arbeiten, und ich bin davon überzeugt, es muss einen einfacheren Weg in .Net 4 mit Linq oder Somesuch - irgendwelche Vorschläge?
Das Abflachen eines Baums scheint von Natur aus rekursiv zu sein. Ich glaube nicht, dass es eine einzige Möglichkeit gibt, einen Baum zu glätten, sogar mit LINQ. Würden Sie eine rekursive Antwort akzeptieren? – climbage
Sicherlich. Es ist nur eines dieser Dinge, die so aussehen, als ob es eine "einfache" Antwort geben sollte.Linq "selectMany" wird zwei Ebenen eines Baumes reduzieren, aber das Problem ist, dass ich nicht wissen kann, wie viele Level ich in meinem Objekt habe, wenn ich anfange. Ich denke also, Rekursion ist der einzige Weg zu gehen. –