Gunakan objek kumpulan butang linq
Katakan kita mempunyai kelas yang dipanggil orang:
<code class="language-csharp">class Person { public int PersonID; public string Car; // 将car改为Car,符合C#命名规范 }</code>
<code class="language-csharp">List<Person> persons;</code>
Matlamat kami adalah untuk mengumpulkan objek ini mengikut personid dan mendapatkan senarai semua kereta yang dimiliki oleh semua orang. Keputusan yang diharapkan ditunjukkan di bawah:
<code class="language-csharp">persons = new List<Person>() { new Person { PersonID = 1, Car = "Ferrari" }, new Person { PersonID = 1, Car = "BMW" }, new Person { PersonID = 2, Car = "Audi" } };</code>
Selepas kumpulan, kami akan mendapat:
<code class="language-csharp">class Result { public int PersonID; public List<string> Cars; }</code>
Atas sebab ini, kita boleh menggunakan kaedah GroupBy Linq:
<code class="language-csharp">// 示例结果,实际结果由LINQ查询生成 var results = new List<Result>() { new Result { PersonID = 1, Cars = new List<string> { "Ferrari", "BMW" } }, new Result { PersonID = 2, Cars = new List<string> { "Audi" } } };</code>
Dalam klausa GroupBy, kami menentukan PersonID sebagai kunci kumpulan dan memproyeksikan harta kereta. Urutan yang dihasilkan akan menjadi satu set kunci yang berkaitan dengan kereta masing -masing.
<code class="language-csharp">var results = from p in persons group p.Car by p.PersonID into g select new Result { PersonID = g.Key, Cars = g.ToList() };</code>
atau, anda boleh menggunakan kamus carian untuk mencapai hasil yang sama:
Ini akan mewujudkan kamus, di mana kunci adalah personid, dan nilai itu adalah senarai kereta semua orang. Untuk mencari kereta tertentu, anda boleh menggunakan:
<code class="language-csharp">var carsByPersonId = persons.ToLookup(p => p.PersonID, p => p.Car);</code>
Dengan menggunakan teknologi ini, anda boleh menggunakan C#dan LINQ untuk mengikuti objek ikatan awam dengan berkesan dan mengambil senarai data yang berkaitan dengan cara yang mudah dan cekap. Contoh kod telah diperbaiki, yang lebih sesuai dengan spesifikasi pengekodan C#.
<code class="language-csharp">// 这将返回一个空序列,对于查找中不存在的personId var carsForPerson = carsByPersonId[personId];</code>
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengumpulkan objek dengan kunci menggunakan linq dalam c#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!