Heim > Backend-Entwicklung > C++ > Wie kann ich eine Baumstruktur und einen Filter mit einer Eigenschaft mit LINQ filtern?

Wie kann ich eine Baumstruktur und einen Filter mit einer Eigenschaft mit LINQ filtern?

Patricia Arquette
Freigeben: 2025-01-29 00:51:14
Original
235 Leute haben es durchsucht

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

Verwenden Sie die Linq Flat -Shaped -Baumstruktur und Filter gemäß dem Attribut

Auf dem Gebiet der Baumdaten ist es häufig erforderlich, die hierarchische Struktur in eine flache Liste umzuwandeln. Angenommen, Sie haben einen geschichteten Klassenmode mit den Attributen für übergeordnete und Elemente und möchten die Bäume abflachen, indem Sie alle MyNode -Instanzen in einer einzigen Liste extrahieren. Insbesondere sind Sie nur daran interessiert, Knoten zu erhalten, die in der Gruppe gleich 1 sind.

Die folgende Linq -Abfrage bietet Ihnen eine Lösung:

<code class="language-c#">var flatList = rootNodes.SelectMany(node => Flatten(node.Elements)).Concat(rootNodes).Where(node => node.group == 1);</code>
Nach dem Login kopieren
Folgendes ist das Arbeitsprinzip:

    selectMany (node ​​= & gt; flacher (node.elements))
  • : Diese Methode hat die Sammlung der Elemente jedes MyNode rekursiv abgeflacht, um die flache Liste aller Nachkommen zu erhalten. concat (rootNodes)
  • : Verbinden Sie die flache Liste der Nachkommen mit der ursprünglichen Mynodes -Liste.
  • wobei (node ​​= & gt; node.group == 1) : Filter die flache Liste, die nur Knoten mit einem Gruppenattribut 1 enthält.
  • Um die Lesbarkeit des Codes zu verbessern, sollten Sie die Erweiterungsmethode zum Abflachen verwenden:
Verwenden Sie dann Ihre Baumanrufe -Erweiterungsmethode und geben Sie an, wie Sie Nachkommen abrufen:

<code class="language-c#">public static IEnumerable<T> Flatten<T>(this IEnumerable<T> e, Func<T, IEnumerable<T>> f) => e.SelectMany(c => f(c).Flatten(f)).Concat(e);</code>
Nach dem Login kopieren
Genießen Sie die Vorteile, die durch die Verwendung von LINQ -Flachebenendaten mitgebracht werden!

Das obige ist der detaillierte Inhalt vonWie kann ich eine Baumstruktur und einen Filter mit einer Eigenschaft mit LINQ 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