Comparez le contenu des objets List
Lors de la comparaison de deux objets List
Si l'ordre des éléments n'a pas d'importance, trier les deux listes avant de comparer est une approche simple. Ceci peut être réalisé en utilisant le code suivant :
<code class="language-csharp">Enumerable.SequenceEqual(list1.OrderBy(t => t), list2.OrderBy(t => t))</code>
Alternativement, pour améliorer les performances et être compatible avec les types qui implémentent IEquatable
<code class="language-csharp">public static bool ScrambledEquals<T>(IEnumerable<T> list1, IEnumerable<T> list2) { var cnt = new Dictionary<T, int>(); foreach (T s in list1) { if (cnt.ContainsKey(s)) { cnt[s]++; } else { cnt.Add(s, 1); } } foreach (T s in list2) { if (cnt.ContainsKey(s)) { cnt[s]--; } else { return false; } } return cnt.Values.All(c => c == 0); }</code>
Si le type de données utilisé comme clé ne prend pas en charge les comparaisons d'égalité par défaut, vous pouvez utiliser une autre version de la fonction ci-dessus qui prend un comparateur d'égalité comme paramètre :
<code class="language-csharp">public static bool ScrambledEquals<T>(IEnumerable<T> list1, IEnumerable<T> list2, IEqualityComparer<T> comparer) { var cnt = new Dictionary<T, int>(comparer); //其余代码保持不变 }</code>
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!