Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah IEnumerable.Intersect() Boleh Cari Persilangan Senarai Berbilang dalam C#?

Bagaimanakah IEnumerable.Intersect() Boleh Cari Persilangan Senarai Berbilang dalam C#?

Barbara Streisand
Barbara Streisandasal
2025-01-15 12:13:44663semak imbas

How Can IEnumerable.Intersect() Find the Intersection of Multiple Lists in C#?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn