Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya boleh mengumpulkan objek dengan kunci menggunakan linq dalam c#?

Bagaimanakah saya boleh mengumpulkan objek dengan kunci menggunakan linq dalam c#?

Mary-Kate Olsen
Lepaskan: 2025-02-02 00:21:10
asal
775 orang telah melayarinya

How Can I Group Objects by a Key Using LINQ in C#?

Gunakan objek kumpulan butang linq

Dalam pengaturcaraan yang berorientasikan objek, ia sangat berguna mengikut atribut awam atau objek kumpulan utama. Contoh ini membincangkan cara menggunakan LINQ (Integrasi Bahasa) mengikut objek kumpulan personID dan mendapatkan senarai kereta yang berkaitan dengan semua orang.

Katakan kita mempunyai kelas yang dipanggil orang:

<code class="language-csharp">class Person
{
    public int PersonID;
    public string Car; // 将car改为Car,符合C#命名规范
}</code>
Salin selepas log masuk
kami juga mempunyai senarai objek orang:

<code class="language-csharp">List<Person> persons;</code>
Salin selepas log masuk
Senarai ini mungkin mengandungi pelbagai contoh dengan personid yang sama. Contohnya:

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>
Salin selepas log masuk

Selepas kumpulan, kami akan mendapat:
<code class="language-csharp">class Result
{
    public int PersonID;
    public List<string> Cars;
}</code>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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