Utilisez des expressions Lambda pour personnaliser l'opération Distinct()
Lorsqu'il s'agit d'objets énumérables, la méthode Distinct()
fournit un moyen direct de supprimer les valeurs en double. Cependant, pour les objets qui nécessitent des contrôles d'égalité personnalisés, les méthodes surchargées Distinct()
existantes ne sont pas idéales.
On pourrait s'attendre à une méthode surchargée qui accepte une expression Lambda pour définir l'égalité, par exemple :
<code class="language-c#">var distinctValues = myCustomerList.Distinct((c1, c2) => c1.CustomerId == c2.CustomerId);</code>
Cependant, de telles méthodes surchargées n’existent pas dans les méthodes natives. Au lieu de cela, des instances IEqualityComparer<T>
doivent être utilisées, ce qui peut être long et fastidieux.
Alternatives
Pour obtenir la fonctionnalité souhaitée, vous pouvez combiner les méthodes GroupBy()
et Select()
:
<code class="language-c#">IEnumerable<Customer> filteredList = originalList .GroupBy(customer => customer.CustomerId) .Select(group => group.First());</code>
Cette méthode identifie et regroupe les éléments en fonction du champ CustomerId
. La méthode First()
sélectionne ensuite le premier élément de chaque groupe, supprimant ainsi efficacement les doublons.
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!