Heim >Backend-Entwicklung >C++ >Wie kann ich zwei Listenobjekte effizient auf Inhaltsgleichheit in C# vergleichen?
Vergleichen Sie den Inhalt von List
Beim Vergleich zweier List
Wenn die Reihenfolge der Elemente keine Rolle spielt, ist das Sortieren beider Listen vor dem Vergleich ein einfacher Ansatz. Dies kann mit dem folgenden Code erreicht werden:
<code class="language-csharp">Enumerable.SequenceEqual(list1.OrderBy(t => t), list2.OrderBy(t => t))</code>
Um die Leistung zu verbessern und mit Typen kompatibel zu sein, die 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>
Wenn der als Schlüssel verwendete Datentyp standardmäßig keine Gleichheitsvergleiche unterstützt, können Sie eine andere Version der obigen Funktion verwenden, die einen Gleichheitskomparator als Parameter verwendet:
<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>
Das obige ist der detaillierte Inhalt vonWie kann ich zwei Listenobjekte effizient auf Inhaltsgleichheit in C# vergleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!