Stratégies pour comparer efficacement les différences dans les grandes listes
Comparer les différences peut nécessiter beaucoup de ressources lorsque l'on travaille avec de grandes listes. Bien que la méthode Contains()
de LINQ soit une pratique courante, elle est inefficace pour les ensembles de données volumineux. Une meilleure solution consiste à utiliser la méthode Except()
.
Utilisez la méthode Except()
La méthodeExcept()
fonctionne sur IEnumerable
et trouve les éléments présents dans une liste mais pas dans une autre. En appliquant Except()
aux deux listes, nous obtenons deux nouvelles listes :
firstNotSecond
: Contient des éléments qui sont dans la première liste mais qui manquent dans la deuxième liste. secondNotFirst
: Contient des éléments de la deuxième liste qui manquent dans la première liste. Cette méthode est beaucoup plus rapide que d'utiliser le Contains()
chèque. Par exemple :
<code class="language-csharp">var firstNotSecond = list1.Except(list2).ToList(); var secondNotFirst = list2.Except(list1).ToList();</code>
Résultats fusionnés
Si vous le souhaitez, les résultats peuvent être combinés en une seule déclaration :
<code class="language-csharp">return !firstNotSecond.Any() && !secondNotFirst.Any();</code>
Cette instruction est évaluée à true
si les deux listes d'entrée contiennent exactement les mêmes éléments, et false
sinon.
Notes sur les éléments répétitifs
Il convient de noter que la méthode Except()
gère les éléments répétés différemment de la méthode Contains()
. Dans le code d'origine, les éléments en double de la première liste qui n'étaient pas présents dans la deuxième liste étaient signalés plusieurs fois. Cependant, Except()
ne signale chaque élément répété qu'une seule fois. Cette différence doit être prise en compte lors de l'utilisation de cette solution.
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!