Gunakan IEnumerable.Intersect() untuk mencari persilangan berbilang senarai dalam C#
Dalam C#, anda boleh menggunakan IEnumerable.Intersect()
untuk mencari elemen biasa berbilang senarai dengan cekap.
Huraian Masalah
Andaikan anda mempunyai satu set senarai dan perlu mencari elemen persilangannya. Contohnya:
<code class="language-csharp">var list1 = new List<int>() { 1, 2, 3 }; var list2 = new List<int>() { 2, 3, 4 }; var list3 = new List<int>() { 3, 4, 5 }; var listOfLists = new List<List<int>>() { list1, list2, list3 }; // 预期交集为 List<int>() { 3 }</code>
Tugasnya ialah menggunakan IEnumerable.Intersect()
untuk melaksanakan carian persimpangan ini.
Penyelesaian
Untuk melaksanakan operasi persilangan pada berbilang senarai, gunakan IEnumerable.Intersect()
secara berulang. Menggunakan gelung foreach
, mula-mula hitung persilangan dua senarai pertama, kemudian potong hasil dengan senarai ketiga, dan seterusnya sehingga semua senarai telah diproses.
<code class="language-csharp">// 使用第一个列表初始化交集 var intersection = listOfLists[0].ToHashSet(); // 与其余列表求交集 foreach (var list in listOfLists.Skip(1)) { intersection.IntersectWith(list.ToHashSet()); }</code>
Penyelesaian ini mudah dan mudah.
Nota Prestasi
Prestasi penyelesaian ini mungkin berbeza bergantung pada bilangan dan saiz senarai. Untuk set data yang besar, disyorkan untuk menggunakan penyelesaian yang lebih optimum, seperti menggunakan HashSet
.
Atas ialah kandungan terperinci Bagaimanakah IEnumerable.Intersect() Boleh Cari Persilangan Senarai Berbilang dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!