Maison > développement back-end > C++ > Comment puis-je combiner deux listes d'objets personne en C# à l'aide de LINQ, en gérant les doublons et en calculant les différences ?

Comment puis-je combiner deux listes d'objets personne en C# à l'aide de LINQ, en gérant les doublons et en calculant les différences ?

Susan Sarandon
Libérer: 2024-12-29 07:28:09
original
610 Les gens l'ont consulté

How Can I Combine Two Lists of Person Objects in C# Using LINQ, Handling Duplicates and Calculating Differences?

Création d'une liste combinée avec des valeurs transformées à l'aide de LINQ

Dans le scénario présenté, vous disposez de deux listes d'objets Personne et avez besoin d'une nouvelle liste qui combine ces listes. Pour les objets Person identiques, l'entrée fusionnée doit conserver son nom partagé, posséder la valeur de list2 et sa modification doit être calculée comme (list2.Value - list1.Value). S'il n'y a pas de duplication, la modification doit rester à zéro.

Pour y parvenir, utilisez la méthode d'extension LINQ Union. Par exemple :

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

Cette action fusionne les deux listes, éliminant ainsi les doublons. Par défaut, les méthodes Equals et GetHashCode définies dans votre classe Person sont utilisées pour déterminer l'égalité des objets. Pour une comparaison personnalisée basée sur une propriété telle que Name, remplacez ces méthodes comme suit :

public override bool Equals(object obj)
{
    // Check if obj is convertible to Person
    var person = obj as Person;
    return Equals(person);
}

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

public bool Equals(Person personToCompareTo)
{
    // Check for null or empty Name
    if (personToCompareTo == null || string.IsNullOrEmpty(personToCompareTo.Name)) return false;
    // Compare Names for equality
    return Name.Equals(personToCompareTo.Name);
}
Copier après la connexion

Vous pouvez également définir une classe de comparaison implémentant l'interface IEqualityComparer et la fournir comme deuxième argument de la méthode Union pour la comparaison d'objets personnalisés. . Pour plus de détails, reportez-vous à https://msdn.microsoft.com/en-us/library/system.collections.iequalitycomparer.aspx.

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