Buang senarai
Beberapa kaedah item berulang
Salah satu penyelesaian yang paling mudah dan mudah -untuk menggunakan LINQ (Integrasi Bahasa). Ciri ini diperkenalkan dalam .NET 3, menyediakan kaedah pernyataan untuk menanyakan dan menyampaikan data. Berikut adalah contoh LINQ:
Tapis unsur -unsur berulang dalam senarai
, dan kembalikan senarai baru<code class="language-csharp">List<T> withDupes = LoadSomeData(); List<T> noDupes = withDupes.Distinct().ToList();</code>
kaedah mengubah yang dihasilkan Distinct()
ke withDupes
. noDupes
ToList()
Jika anda sudah menggunakan ungkapan LINQ, kaedah ini sangat mudah. IEnumerable
List
Pilihan lain ialah menggunakan Hashset, yang merupakan jenis koleksi yang direka untuk pencarian pantas dan pengesanan berulang yang cekap. Berikut adalah kaedah yang boleh anda lakukan operasi ini:
Pada mulanya kosong. Kami melintasi setiap projek dalam dan cuba menambahkannya ke koleksi. Oleh kerana hashset tidak dibenarkan mengulangi, hanya satu -satunya projek yang dapat ditambah dengan jayanya. Akhirnya, penggunaan koleksi yang dihasilkan untuk kembali ke senarai.
Kaedah ini menyediakan prestasi O (n) untuk penyisipan dan operasi carian.
<code class="language-csharp">HashSet<T> hashSet = new HashSet<T>(); foreach (var item in withDupes) { hashSet.Add(item); } List<T> noDupes = new List<T>(hashSet);</code>
HashSet hashSet
withDupes
Kaedah ketiga melibatkan penggunaan kamus untuk mengesan elemen unik: noDupes
Penyimpanan sementara untuk elemen yang unik. Kami melintasi senarai untuk memeriksa sama ada setiap item wujud dalam kamus. Jika tidak, kami menambahnya ke senarai kamus dan
.Kaedah ini juga menyediakan kerumitan O (n), tetapi ia perlu membuat struktur data tambahan untuk menjejaki secara unik.
Pilih kaedah yang betul
<code class="language-csharp">Dictionary<T, bool> dict = new Dictionary<T, bool>(); List<T> noDupes = new List<T>(); foreach (var item in withDupes) { if (!dict.ContainsKey(item)) { dict.Add(item, true); noDupes.Add(item); } }</code>
Atas ialah kandungan terperinci Bagaimanakah saya dapat menghapuskan pendua dari senarai C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!