Maison >développement back-end >C++ >Comment puis-je utiliser des expressions lambda pour des opérations distinctes () personnalisées sur des objets énumérables?

Comment puis-je utiliser des expressions lambda pour des opérations distinctes () personnalisées sur des objets énumérables?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-25 23:01:09178parcourir

How Can I Use Lambda Expressions for Custom Distinct() Operations on Enumerable Objects?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn