Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Membandingkan Dua Objek Senarai dengan Cekap untuk Kesamaan Kandungan dalam C#?
Bandingkan kandungan List
Apabila membandingkan dua objek Senarai
Jika susunan elemen tidak penting, menyusun kedua-dua senarai sebelum membandingkan ialah pendekatan yang mudah. Ini boleh dicapai menggunakan kod berikut:
<code class="language-csharp">Enumerable.SequenceEqual(list1.OrderBy(t => t), list2.OrderBy(t => t))</code>
Sebagai alternatif, untuk meningkatkan prestasi dan serasi dengan jenis yang melaksanakan 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>
Jika jenis data yang digunakan sebagai kunci tidak menyokong perbandingan kesamaan secara lalai, anda boleh menggunakan versi lain fungsi di atas yang mengambil pembanding kesamaan sebagai parameter:
<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>
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan Dua Objek Senarai dengan Cekap untuk Kesamaan Kandungan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!