Maison > développement back-end > C++ > Comment puis-je utiliser .Except() pour rechercher les différences entre les listes d'objets personnalisés en C# ?

Comment puis-je utiliser .Except() pour rechercher les différences entre les listes d'objets personnalisés en C# ?

Mary-Kate Olsen
Libérer: 2025-01-23 00:59:10
original
410 Les gens l'ont consulté

How Can I Use .Except() to Find Differences Between Lists of Custom Objects in C#?

Exploiter .Except() pour comparer des listes d'objets personnalisés en C#

Fréquemment en développement C#, nous rencontrons des scénarios nécessitant la comparaison et la manipulation de listes. Une tâche courante consiste à identifier les éléments uniques présents dans une liste mais absents dans une autre. La méthode .Except() du framework .NET fournit une solution élégante pour cela.

Personnalisation des comparaisons d'égalité avec .Except()

Lorsque vous travaillez avec des objets personnalisés, définir l'égalité est crucial. Si votre classe CustomObject remplace déjà Equals() et GetHashCode(), ou si l'égalité de référence suffit, .Except() peut être utilisée directement :

<code class="language-csharp">var list3 = list1.Except(list2).ToList();</code>
Copier après la connexion

Cependant, pour des définitions d'égalité plus nuancées (par exemple, une comparaison basée sur une propriété ID), la mise en œuvre de IEqualityComparer<T> est nécessaire :

<code class="language-csharp">public class IdComparer : IEqualityComparer<CustomObject>
{
    // Implement GetHashCode and Equals methods based on ID property...
}</code>
Copier après la connexion

Ensuite, utilisez le comparateur personnalisé avec .Except() :

<code class="language-csharp">var list3 = list1.Except(list2, new IdComparer()).ToList();</code>
Copier après la connexion

Résolution des entrées en double

.Except() supprime intrinsèquement les éléments en double. Pour conserver les doublons dans la liste résultante, envisagez de convertir la deuxième liste en HashSet et d'utiliser une approche de filtrage :

<code class="language-csharp">var set2 = list2.ToHashSet();
var list3 = list1.Where(x => !set2.Contains(x)).ToList();</code>
Copier après la connexion

Résumé

La méthode .Except() offre un moyen simple et efficace de trouver la différence définie entre deux listes contenant des objets personnalisés. En mettant en œuvre des comparaisons d'égalité personnalisées ou en gérant les doublons selon vos besoins, vous pouvez adapter cette méthode à diverses exigences de comparaison.

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