Heim >Backend-Entwicklung >C++ >Wie kann ich Lambda -Ausdrücke verwenden, um in .NET unterschiedliche Werte zu erhalten?
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:
<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!