Wie man LINQ verwendet, um unterschiedliche Eigenschaftswerte aus In-Memory-Listen abzurufen

Die Arbeit mit Sammlungen in C# ist eine gängige Aufgabe, insbesondere wenn es darum geht, verschiedene Eigenschaften von Objekten zu behandeln. Eine häufige Anforderung ist es, eindeutige Werte effizient aus einer Liste zu extrahieren. In diesem Beitrag werden wir eine häufige Frage behandeln, mit der viele Entwickler konfrontiert sind: Wie bekomme ich ein Array von unterschiedlichen Eigenschaftswerten aus einer Liste im Speicher unter Verwendung von LINQ?

Das Problem verstehen

Stellen Sie sich vor, Sie haben eine Liste von Objekten einer Klasse namens Foo. Jedes Foo-Objekt hat eine Zeichenfolgen-Eigenschaft namens Bar, und Sie möchten alle einzigartigen Werte von Bar aus dieser Liste sammeln. Die Herausforderung besteht darin, dies ohne übermäßige Komplexität und auf eine effiziente und wartbare Weise zu erreichen.

Das Szenario

  1. Sie haben eine List<Foo>.
  2. Jedes Foo-Objekt hat eine Eigenschaft Bar vom Typ string.
  3. Sie möchten ein string[] erhalten, das nur die unterschiedlichen Werte aus den Bar-Eigenschaften aller Foo-Instanzen enthält.

Die Lösung

Um die unterschiedlichen Werte von Bar aus einer Liste von Foo-Objekten effektiv zu extrahieren, können Sie die Leistungsfähigkeit von LINQ nutzen. So geht’s:

Verwendung von LINQ zur Extraktion unterschiedlicher Werte

Hier ist ein einfacher und eleganter Weg, Ihr Ziel mit LINQ zu erreichen:

var bars = Foos.Select(f => f.Bar).Distinct().ToArray();

Aufschlüsselung des Codes

  1. Foos.Select(f => f.Bar): Dieser Teil des Codes ist ein Lambda-Ausdruck, der jedes Foo-Objekt in seine Bar-Eigenschaft projiziert.
  2. .Distinct(): Dieser Methodenaufruf filtert das Ergebnis und gibt nur einzigartige Werte zurück, wodurch Duplikate aus der Auswahl effektiv eliminiert werden.
  3. .ToArray(): Schließlich konvertiert ToArray() das Resultat vom Typ IEnumerable in ein Array von Zeichenfolgen.

Wichtige Überlegungen

  • Aufgeschobene Ausführung: LINQ-Abfragen werden nicht ausgeführt, bis Sie ihre Ergebnisse explizit konsumieren. Durch die Verwendung von Methoden wie ToArray() oder Count() lösen Sie die Auswertung der Abfrage aus.
  • Optimierungen: Es ist ratsam, Ihre Abfragen vollständig zu erstellen, bevor Sie die Auswertung mit ToArray() forcieren, da LINQ während des Ausführungsprozesses Optimierungen anwenden kann.

Fazit

Die Verwendung von LINQ vereinfacht nicht nur den Prozess der Extraktion unterschiedlicher Eigenschaftswerte, sondern sichert auch, dass Ihr Code sauber und wartbar bleibt. Durch die ordnungsgemäße Strukturierung Ihrer Abfragen können Sie die Fähigkeiten von LINQ effektiv nutzen, um die Leistung zu optimieren.

Das nächste Mal, wenn Sie aus einer Liste in C# unterschiedliche Werte extrahieren müssen, können Sie diesen einfachen Ansatz selbstbewusst anwenden!