Ich habe eine Klasse, die eine Liste von sich selbst, so dass es in einer Baumstruktur dargestellt werden kann.Build Baum Typ Liste durch rekursive Prüfung Eltern-Kind-Beziehung C#
Ich ziehe eine flache Liste dieser Klassen und möchte sie aufklappen.
public class Group
{
public int ID {get;set;}
public int? ParentID {get;set;}
public List<Group> Children {get;set;}
}
Ich mag folgende
List<Group> flatList = GetFlatList() //I CAN ALREADY DO THIS
List<Group> tree = BuildTree(flatList);
Die ParentID Lage sein, die ID-Eigenschaft auf seiner Stammgruppe offensichtlich, wenn das ist nicht im Zusammenhang zu tun.
EDIT
Es gibt einige Verwirrung darüber, warum ich eine Liste und nicht ein einzelnes Objekt zurückkehre.
Ich baue ein UI-Element, das eine Liste von Elementen hat, von denen jedes ein Kind hat. Die erste Liste hat also keinen Wurzelknoten. Es scheint, dass alle Lösungen bisher nicht funktionieren.
Was das bedeutet ist, ich brauche im Wesentlichen eine Liste von Baumtyp Strukturen mit Group-Klasse.
Ist die flache Liste in irgendeiner Weise bestellt? So wie ein Elternteil immer vor einem seiner Kinder auftritt, können Sie eine solche Bestellung garantieren? Oder könnten Sie Kinder vor ihren Eltern bekommen? –
Verwenden Sie ein 'Dictionary', um IDs zu 'Group's zuzuordnen, und verwenden Sie diese, um nachzuschlagen, welchem Elternelement ein Element hinzugefügt werden soll. Dies beinhaltet auch zu keinem Zeitpunkt eine Rekursion, abgesehen von der Tatsache, dass ein Baum eine rekursive Datenstruktur ist. –
millimoose
Was ist der Typ von FlatList? Die 'var' gibt uns nicht viele Informationen. – JLRishe