Identifier efficacement les valeurs uniques dans .NET avec les expressions lambda
Extraire des éléments uniques d'une collection est un besoin de programmation fréquente. La bibliothèque LINQ de .NET offre la méthode Distinct()
pour cela, mais ses limites deviennent apparentes lorsqu'ils traitent des objets personnalisés nécessitant des comparaisons d'égalité spécifiques. Tandis que Distinct()
accepte un IEqualityComparer
, l'utilisation directement des expressions de lambda pour cette comparaison n'est pas prise en charge nativement.
Une approche concise en utilisant IEqualityComparer
Une solution consiste à créer un IEqualityComparer
en ligne:
<code class="language-csharp">var distinctValues = myCustomerList.Distinct( EqualityComparer<Customer>.Create((c1, c2) => c1.CustomerId == c2.CustomerId) );</code>
Cette méthode, bien que fonctionnelle, peut se sentir quelque peu lourde.
Alternative: levier GroupBy
et Select
Une alternative plus élégante contourne la nécessité d'un IEqualityComparer
explicite. Cette approche utilise GroupBy
et Select
:
<code class="language-csharp">IEnumerable<Customer> filteredList = originalList .GroupBy(customer => customer.CustomerId) .Select(group => group.First());</code>
Cela regroupe les éléments basés sur la clé spécifiée (CustomerId
dans ce cas), puis sélectionne le premier élément de chaque groupe, filtrant efficacement les doublons. Cela fournit une solution plus propre et plus lisible pour obtenir des valeurs distinctes en utilisant des expressions de lambda.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!