Heim >Backend-Entwicklung >C++ >Wie kann LINQ eine Baumstruktur und einen Filter durch eine bestimmte Eigenschaft filtern?
anzuzeigen In der Softwareentwicklung sind häufig Daten erforderlich, die Gewebe in eine baumähnliche Struktur sind. Eine häufige Aufgabe besteht darin, Bäume in flache Listen oder Sets umzuwandeln. Dies kann mit einem LINQ -Framework (Language Integration Query) im .NET implementiert werden.
unter der Annahme, dass wir die folgende einfache Baumstruktur haben, die von der MyNode -Klasse ausgedrückt wird:
Wir erhalten eine IEnumeration
<code class="language-csharp">class MyNode { public MyNode Parent; public IEnumerable<MyNode> Elements; public int Group { get; set; } }</code>und möchten die Liste aller Knoten (einschließlich interner Knoten) als einzelne flache Liste in den Baum erhalten. Darüber hinaus hoffen wir, diese Liste zu filtern, nur der Knoten mit einem Gruppenattribut von 1.
Um der Liste der LEFLATION der Gruppe zu folgen, können wir den Where -Operator verwenden:
<code class="language-csharp">public static IEnumerable<MyNode> Flatten(this IEnumerable<MyNode> elements) => elements.SelectMany(c => Flatten(c.Elements)).Concat(elements);</code>
Diese Lösung ist effektiv und elegant abgeflacht, und die unerwünschten Knoten werden gemäß den Gruppenattributen herausgefiltert.
<code class="language-csharp">var flattenedList = treeElements.Flatten().Where(node => node.Group == 1);</code>
Das obige ist der detaillierte Inhalt vonWie kann LINQ eine Baumstruktur und einen Filter durch eine bestimmte Eigenschaft filtern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!