Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Cekap Mencari Persimpangan Pelbagai Senarai dalam C# menggunakan IEnumerable.Intersect()?
Gunakan IEnumerable.Intersect() untuk mencari persilangan berbilang senarai dengan cekap dalam C#
Dalam bidang analisis dan pemprosesan data, mencari persilangan berbilang senarai adalah tugas yang sangat biasa. Walaupun terdapat pelbagai cara untuk menyelesaikan masalah ini, menggunakan kaedah IEnumerable.Intersect() menyediakan penyelesaian yang cekap. Artikel ini meneroka cara menggunakan kaedah ini untuk mengenal pasti dan mendapatkan semula persilangan berbilang senarai.
Dalam C#, apabila digunakan pada berbilang jujukan, kaedah IEnumerable.Intersect() boleh digunakan untuk mendapatkan elemen yang sama kepada semua jujukan. Untuk melihat cara menggunakan kaedah ini untuk mencari persilangan berbilang senarai, pertimbangkan contoh berikut:
<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>
Untuk mencari persilangan senarai ini menggunakan IEnumerable.Intersect() kita boleh menggunakan kaedah berikut:
<code class="language-csharp">var intersection = listOfLists .Skip(1) .Aggregate( new HashSet<int>(listOfLists.First()), (h, e) => { h.IntersectWith(e); return h; } );</code>
Dalam penyelesaian ini kami:
Penyelesaian ini menyediakan cara ringkas dan cekap untuk mencari persilangan berbilang senarai menggunakan IEnumerable.Intersect(). Ia memanfaatkan ciri pengoptimuman HashSet untuk mengendalikan elemen pendua dan melaksanakan operasi persimpangan yang pantas.
Adalah penting untuk ambil perhatian bahawa listOfLists hendaklah sentiasa mengandungi sekurang-kurangnya satu senarai untuk memulakan persimpangan dengannya. Jika senarai itu kosong, ArgumentNullException dilemparkan.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Mencari Persimpangan Pelbagai Senarai dalam C# menggunakan IEnumerable.Intersect()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!