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>
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>
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>
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!