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();
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); }
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!