Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah LINQ Boleh Menapis Item dengan Cekap dalam Satu Senarai Berdasarkan Kehadiran Item dalam Senarai Lain?

Bagaimanakah LINQ Boleh Menapis Item dengan Cekap dalam Satu Senarai Berdasarkan Kehadiran Item dalam Senarai Lain?

Barbara Streisand
Lepaskan: 2025-01-19 18:27:10
asal
309 orang telah melayarinya

How Can LINQ Efficiently Filter Items in One List Based on the Presence of Items in Another List?

Gunakan pertanyaan LINQ untuk menapis item dalam senarai

LINQ menyediakan cara yang cekap untuk menapis item dalam senarai berdasarkan sama ada item itu wujud dalam senarai lain. Sila lihat contoh kod di bawah:

class Program
{
    static void Main(string[] args)
    {
        // 示例数据
        List<Person> peopleList1 = new List<Person>() { new Person() { ID = 1 }, new Person() { ID = 2 }, new Person() { ID = 3 } };
        List<Person> peopleList2 = new List<Person>() { new Person() { ID = 1 }, new Person() { ID = 2 }, new Person() { ID = 3 }, new Person() { ID = 4 }, new Person() { ID = 5 } };
    }
}

class Person
{
    public int ID { get; set; }
}
Salin selepas log masuk

Kita perlu mencari item dalam peopleList2 yang tiada dalam peopleList1. Ini boleh dicapai melalui LINQ.

Gunakan kaedah Except()

LINQ menyediakan kaedah Except(), yang mengembalikan semua elemen dalam senarai pertama yang tiada dalam senarai kedua. Kita boleh menggunakannya seperti berikut:

var result = peopleList2.Except(peopleList1);
Salin selepas log masuk

Ini akan mengembalikan koleksi yang mengandungi orang dengan ID 4 dan 5.

Gunakan sintaks pertanyaan LINQ

LINQ juga membenarkan kami melakukan operasi penapisan menggunakan sintaks pertanyaan. Berikut ialah satu cara untuk mencapai hasil yang sama menggunakan sintaks pertanyaan:

var result = from p in peopleList2
             where !peopleList1.Any(p2 => p2.ID == p.ID)
             select p;
Salin selepas log masuk

Pertanyaan ini menghasilkan hasil yang sama seperti kaedah Except().

Penerangan Prestasi:

Perlu diambil perhatian bahawa kerumitan masa kedua-dua kaedah ialah O(n*m), dengan n dan m ialah saiz kedua-dua senarai yang dibandingkan. Ini bermakna apabila saiz senarai bertambah, masa yang diperlukan untuk operasi penapisan meningkat dengan ketara. Untuk set data yang besar, kaedah lain mungkin perlu diterokai untuk mengoptimumkan prestasi.

Atas ialah kandungan terperinci Bagaimanakah LINQ Boleh Menapis Item dengan Cekap dalam Satu Senarai Berdasarkan Kehadiran Item dalam Senarai Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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