Ich habe ein XML wie folgt:
Und ich habe eine Mitgliedsklasse mit dem Namen der Eigenschaft.
Wie kann ich jede Unit und ihre untergeordneten Einheiten in mehrere generische List<Unit>
lesen, die wiederum unter Verwendung der neuesten .NET-Technologie untergeordnete List<Unit>
rekursiv verwenden können?
Die Herausforderung wäre, es als 1 LINQ-Abfrage zu schreiben, aber das ist mir nicht möglich. LINQ ist nicht einfach / für Rekursion geeignet.
Ich werde eine Lösung skizzieren, ich werde es nicht aufschreiben:
class Unit { ... ; ... List<Unit> Children; }
var units = doc.Descendants("Unit");
var Lookup = new Dictionary<XNode, Unit> ();
Warum implementieren Sie keinen Tree zum Speichern von Einheiten? Das wäre viel einfacher und natürlicher als Listen.
Sehen Sie sich diesen Kommentar für eine gute Implementierung mit LinkedList an.
Siehe
Wenn Sie HAVE verwenden, können Sie die Rekursion verwenden, um sie zu erstellen. Ich gehe davon aus, dass Ihre Unit über eine Eigenschaft (IList Unit.ChildUnits) verfügt, die alle untergeordneten Listen enthält. Wenn nicht, möchten Sie vielleicht Unit in eine andere Klasse einpacken, die dies hat.
%Vor%Tags und Links c# recursion tree linq-to-xml