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
Mary-Kate Olsenasal
2025-02-02 00:21:10870semak imbas

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>
kami juga mempunyai senarai objek orang:

<code class="language-csharp">List<Person> persons;</code>
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>

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!

Kenyataan:
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