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
Libérer: 2025-01-25 23:01:09
original
172 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal