Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah LINQ Boleh Mengenalpasti Elemen Unik kepada Satu Senarai Antara Pelbagai Senarai dengan Cekap?

Bagaimanakah LINQ Boleh Mengenalpasti Elemen Unik kepada Satu Senarai Antara Pelbagai Senarai dengan Cekap?

Linda Hamilton
Lepaskan: 2025-01-19 18:32:10
asal
840 orang telah melayarinya

How Can LINQ Efficiently Identify Elements Unique to One List Among Multiple Lists?

Gunakan LINQ untuk menentukan elemen unik dalam senarai

Kita perlu mengenal pasti elemen yang hanya wujud dalam satu senarai dan bukan dalam senarai lain. LINQ menyediakan penyelesaian yang kemas untuk cabaran ini.

Pertimbangkan coretan kod berikut:

<code class="language-csharp">class Program
{
    static void Main(string[] args)
    {
        // 初始化两个Person对象列表。
        List<Person> peopleList1 = new List<Person>();
        peopleList1.Add(new Person() { ID = 1 });
        peopleList1.Add(new Person() { ID = 2 });
        peopleList1.Add(new Person() { ID = 3 });

        List<Person> peopleList2 = new List<Person>();
        peopleList2.Add(new Person() { ID = 1 });
        peopleList2.Add(new Person() { ID = 2 });
        peopleList2.Add(new Person() { ID = 3 });
        peopleList2.Add(new Person() { ID = 4 });
        peopleList2.Add(new Person() { ID = 5 });
    }
}

class Person
{
    public int ID { get; set; }
}</code>
Salin selepas log masuk

Katakan kita ingin menentukan orang mana dalam peopleList2 yang tidak wujud dalam peopleList1. Untuk melakukan ini, kita boleh menggunakan kaedah Where() LINQ.

Salah satu cara ialah menggunakan kaedah Any():

<code class="language-csharp">var result = peopleList2.Where(p => !peopleList1.Any(p2 => p2.ID == p.ID));</code>
Salin selepas log masuk

Pertanyaan ini menyemak setiap orang dalam peopleList2 untuk melihat sama ada terdapat sesiapa dalam peopleList1 dengan ID yang sama. Jika tiada padanan, orang itu termasuk dalam keputusan.

Atau, cara yang lebih ringkas untuk menyatakan logik yang sama ialah:

<code class="language-csharp">var result = peopleList2.Where(p => peopleList1.All(p2 => p2.ID != p.ID));</code>
Salin selepas log masuk

Dalam kes ini, All() menyemak sama ada ID semua orang dalam peopleList1 adalah berbeza daripada ID orang semasa dalam peopleList2. Jika keadaan ini benar, orang itu termasuk dalam keputusan.

Nota: Adalah penting untuk ambil perhatian bahawa kedua-dua kaedah melaksanakan operasi O(n*m), yang boleh menyebabkan isu prestasi pada set data yang besar. Kaedah tambahan mungkin diperlukan untuk mengoptimumkan prestasi. Sintaks LINQ yang disediakan menyediakan penyelesaian mudah kepada masalah, tetapi sentiasa disyorkan untuk menilai berdasarkan keperluan prestasi projek.

Atas ialah kandungan terperinci Bagaimanakah LINQ Boleh Mengenalpasti Elemen Unik kepada Satu Senarai Antara Pelbagai Senarai dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan