Maison > développement back-end > C++ > Comment puis-je trouver efficacement la différence entre deux listes d'objets personnalisés en C# ?

Comment puis-je trouver efficacement la différence entre deux listes d'objets personnalisés en C# ?

Patricia Arquette
Libérer: 2025-01-23 00:44:11
original
721 Les gens l'ont consulté

How Can I Efficiently Find the Difference Between Two Lists of Custom Objects in C#?

Extraction des différences de listes d'objets personnalisés génériques en C#

Supposons que vous ayez deux listes, chacune contenant des objets personnalisés, et que vous ayez besoin d'un moyen d'obtenir une troisième liste qui contient uniquement les éléments présents dans la première liste mais pas dans le deuxième élément.

À cet effet, la méthode .Except() est une option appropriée. Cette méthode suppose que votre objet personnalisé implémente les méthodes Equals et GetHashCode, fournissant ainsi un moyen de définir l'égalité des objets. Utiliser .Except() est simple :

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

Cependant, si vous devez définir une égalité personnalisée en fonction d'une propriété spécifique (telle que l'ID), vous pouvez définir une IEqualityComparer<T> implémentation. Prenons l'exemple suivant :

<code class="language-csharp">public class IdComparer : IEqualityComparer<CustomObject>
{
    public int GetHashCode(CustomObject co)
    {
        if (co == null)
        {
            return 0;
        }
        return co.Id.GetHashCode();
    }

    public bool Equals(CustomObject x1, CustomObject x2)
    {
        if (object.ReferenceEquals(x1, x2))
        {
            return true;
        }
        if (object.ReferenceEquals(x1, null) ||
            object.ReferenceEquals(x2, null))
        {
            return false;
        }
        return x1.Id == x2.Id;
    }
}</code>
Copier après la connexion

Dans ce cas vous pouvez utiliser le code suivant pour récupérer la différence entre les deux listes :

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

Dans les cas où des doublons existent, pensez à créer un ensemble à partir de la deuxième liste et utilisez la méthode suivante :

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

Cela garantira que les doublons sont conservés dans la liste des résultats.

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