Maison > développement back-end > C++ > Comment la méthode Union de LINQ peut-elle combiner deux listes d'objets et gérer les doublons ?

Comment la méthode Union de LINQ peut-elle combiner deux listes d'objets et gérer les doublons ?

Linda Hamilton
Libérer: 2025-01-04 16:42:40
original
755 Les gens l'ont consulté

How Can LINQ's Union Method Combine Two Lists of Objects and Handle Duplicates?

Combiner deux listes d'objets avec LINQ

Lorsque vous traitez plusieurs listes d'objets, il est souvent nécessaire de les combiner en une unité cohérente. . Dans ce scénario, vous disposez de deux listes d'objets Person et souhaitez les fusionner, en calculant la valeur Change comme la différence entre leurs valeurs respectives s'il existe des doublons.

Pour y parvenir, LINQ propose une méthode d'extension puissante : Union . Par défaut, cette méthode supprime les doublons en fonction des méthodes Equals et GetHashCode définies dans la classe Person. Si ces méthodes ne sont pas remplacées dans votre classe Person ou si vous souhaitez effectuer une comparaison personnalisée, voici comment procéder :

Remplacer Equals et GetHashCode

Au sein de votre Person classe, remplacez les méthodes Equals et GetHashCode pour comparer les objets en fonction de la propriété souhaitée, telle que Nom :

public override bool Equals(object obj)
{
    // Convert object to a Person for comparison
    var person = obj as Person;

    if (person == null) return false;

    return Equals(person);
}

public override int GetHashCode()
{
    return Name.GetHashCode();
}

public bool Equals(Person personToCompareTo)
{
    if (personToCompareTo == null) return false;

    if (string.IsNullOrEmpty(personToCompareTo.Name)) return false;

    return Name.Equals(personToCompareTo.Name);
}
Copier après la connexion

Utilisation d'une classe de comparaison

Implémentez une classe de comparaison qui implémente l'interface IEqualityComparer. Fournissez ce comparateur comme deuxième paramètre dans la méthode d'extension Linq Union :

// Implement IEqualityComparer<Person>
public bool Equals(Person x, Person y)
{
    // Your custom comparison here
}

public int GetHashCode(Person person)
{
    // Your custom hash code generation here
}

var mergedList = list1.Union(list2, new MyPersonComparer());
Copier après la connexion

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