Heim > Backend-Entwicklung > C++ > Wie kann ich effizient eine bestimmte Liste mit Lambda -Ausdrücken in C#erstellen?

Wie kann ich effizient eine bestimmte Liste mit Lambda -Ausdrücken in C#erstellen?

Barbara Streisand
Freigeben: 2025-01-25 22:51:10
Original
223 Leute haben es durchsucht

How Can I Efficiently Create a Distinct List Using Lambda Expressions in C#?

Verwenden Sie den Lambda-Ausdruck, um die Distinct()-Methode anzupassen

Beim Umgang mit aufzählbaren Objekten ist es oft notwendig, eindeutige Werte zu unterscheiden. Obwohl der System.Linq-Namespace eine Distinct()-Erweiterungsmethode bereitstellt, fehlt ihm eine Überladung, die einen Lambda-Ausdruck zur Angabe der Objektgleichheit akzeptiert.

Problem

Aufgrund der fehlenden Überladung basierend auf Lambda-Ausdrücken können Programmierer nur die IEqualityComparer-Schnittstelle verwenden, die die Methoden Equals() und GetHashCode() implementieren muss. Dieser Ansatz kann mühsam und umständlich sein.

Lambda-Ausdruck-basierte Problemumgehung

Während keine vorhandene Erweiterungsmethode der erforderlichen Lambda-Syntax entspricht, kann eine kreative Problemumgehung einen ähnlichen Effekt erzielen. Mit GroupBy() und Select() können Sie aufzählbare Objekte konvertieren:

<code class="language-csharp">IEnumerable<customer> filteredList = originalList
  .GroupBy(customer => customer.CustomerId)
  .Select(group => group.First());</code>
Nach dem Login kopieren

Indem Sie Elemente nach einem angegebenen Schlüssel gruppieren und das erste Element aus jeder Gruppe auswählen, erstellen Sie effektiv eine eindeutige Liste basierend auf dem in GroupBy() bereitgestellten Lambda-Ausdruck.

Gleichheitsproblem basierend auf Lambda-Ausdruck

Es ist wichtig zu beachten, dass auf Lambda-Ausdrücken basierende Gleichheitskomparatoren bei bestimmten Typen (z. B. Zeichenfolgen) zu unerwartetem Verhalten führen können. Um eindeutige Operationen zuverlässig auszuführen, muss eine genaue und konsistente Implementierung von GetHashCode() sichergestellt werden.

Weitere Einblicke

.NET-Chefarchitekt Anders Hejlsberg erläutert die Einschränkungen der auf Lambda-Ausdrücken basierenden Distinct()-Überladung, die darauf zurückzuführen ist, dass die Hash-Tabelle in Distinct() eine Lücke zwischen Equals() und GetHashCode() erfordert, um ordnungsgemäß zu funktionieren.

Das obige ist der detaillierte Inhalt vonWie kann ich effizient eine bestimmte Liste mit Lambda -Ausdrücken in C#erstellen?. 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