Heim >Backend-Entwicklung >C++ >Wie kann ich Lambda -Ausdrücke verwenden, um in .NET unterschiedliche Werte zu erhalten?

Wie kann ich Lambda -Ausdrücke verwenden, um in .NET unterschiedliche Werte zu erhalten?

Linda Hamilton
Linda HamiltonOriginal
2025-01-25 23:06:10792Durchsuche

How Can I Use Lambda Expressions to Get Distinct Values in .NET?

effizient identifizierende eindeutige Werte in .NET mit Lambda -Ausdrücken

identifizieren

Das Extrahieren einzigartiger Elemente aus einer Sammlung ist ein häufiger Programmierbedarf. Die LINQ -Bibliothek von .NET bietet dafür die Distinct() -Methode, aber ihre Einschränkungen werden im Umgang mit benutzerdefinierten Objekten erkennbar, die bestimmte Gleichstellungsvergleiche erfordern. Während Distinct() ein IEqualityComparer akzeptiert, wird die direkte Verwendung von Lambda -Ausdrücken für diesen Vergleich nicht nativ unterstützt.

Ein prägnanter Ansatz mit IEqualityComparer

Eine Lösung besteht darin, ein IEqualityComparer inline:

zu erstellen
<code class="language-csharp">var distinctValues = myCustomerList.Distinct(
    EqualityComparer<Customer>.Create((c1, c2) => c1.CustomerId == c2.CustomerId)
);</code>

Diese Methode kann zwar funktional, aber etwas umständlich anfühlen.

Alternative: Nebel GroupBy und Select

Eine elegantere Alternative umgeht die Notwendigkeit eines expliziten IEqualityComparer. Dieser Ansatz verwendet GroupBy und Select:

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

Diese gruppieren Elemente basierend auf dem angegebenen Schlüssel (CustomerId in diesem Fall) und wählt dann das erste Element aus jeder Gruppe aus, wodurch Duplikate effektiv herausgefiltert werden. Dies liefert eine sauberere und lesbarere Lösung, um unterschiedliche Werte mithilfe von Lambda -Ausdrücken zu erreichen.

Das obige ist der detaillierte Inhalt vonWie kann ich Lambda -Ausdrücke verwenden, um in .NET unterschiedliche Werte zu erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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