C# の List
2 つの List
要素の順序が重要でない場合は、比較する前に両方のリストを並べ替えるのが簡単な方法です。これは、次のコードを使用して実現できます:
<code class="language-csharp">Enumerable.SequenceEqual(list1.OrderBy(t => t), list2.OrderBy(t => t))</code>
また、パフォーマンスを向上させ、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>
キーとして使用されるデータ型がデフォルトで等価比較をサポートしていない場合は、パラメータとして等価コンパレーターを取る上記の関数の別のバージョンを使用できます。
<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>
以上がC# で 2 つのリスト オブジェクトを効率的に比較して内容が等しいかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。