Créer une liste à partir de deux listes d'objets avec Linq
Considérez le scénario suivant :
class Person { string Name; int Value; int Change; } List<Person> list1; List<Person> list2;
L'objectif est pour combiner les deux listes dans une nouvelle Liste
Solution :
La méthode Linq Union convient parfaitement à cette tâche :
var mergedList = list1.Union(list2).ToList();
Ceci L'opération fusionne les deux listes, supprimant les doublons. Par défaut, il invoquera les méthodes Equals et GetHashCode définies dans la classe Person. Cependant, si ces méthodes ne sont pas remplacées, elles risquent de ne pas comparer efficacement nos objets personnalisés (par exemple, en utilisant la propriété Name pour la comparaison).
Remplacement de Equals et GetHashCode :
Pour garantir des comparaisons précises par nom, remplacez les méthodes comme suit :
public override bool Equals(object obj) { var person = obj as Person; return Equals(person); } public override int GetHashCode() { return Name.GetHashCode(); } public bool Equals(Person personToCompareTo) { if (personToCompareTo == null || string.IsNullOrEmpty(personToCompareTo.Name)) return false; return Name.Equals(personToCompareTo.Name); }
Personnalisé Comparer :
Vous pouvez également créer un comparateur personnalisé qui implémente l'interface IEqualityComparer. Ce comparateur peut être fourni comme deuxième argument de la méthode Union. Plus d'informations sur les comparateurs personnalisés peuvent être trouvées ici : http://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!