Heim > Backend-Entwicklung > C++ > Wie kann LINQ eine Baumstruktur und einen Filter durch eine bestimmte Eigenschaft filtern?

Wie kann LINQ eine Baumstruktur und einen Filter durch eine bestimmte Eigenschaft filtern?

Mary-Kate Olsen
Freigeben: 2025-01-29 00:56:12
Original
767 Leute haben es durchsucht

How Can LINQ Flatten a Tree Structure and Filter by a Specific Property?

Verwenden Sie LINQ, um die flache Baumstruktur

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>
Nach dem Login kopieren
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 die Baumstruktur anzuzeigen, können wir das Selectmany Computing von Linq verwenden, um alle Nachkommen jedes Knotens abzurufen. Die folgende Abflacherweiterungsmethode wird erhalten und die Eingabeelemente sind verfügbar und ihre Elemente Attribute werden rekursiv abgeflacht:

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage