Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah pengendali kumpulan Linq dapat mengagregatkan objek secara efisien berdasarkan nilai harta yang dikongsi?

Bagaimanakah pengendali kumpulan Linq dapat mengagregatkan objek secara efisien berdasarkan nilai harta yang dikongsi?

Susan Sarandon
Susan Sarandonasal
2025-02-02 00:26:09246semak imbas

How Can LINQ's GroupBy Operator Efficiently Aggregate Objects Based on Shared Property Values?

Penggunaan efisien pengendali kumpulan Linq untuk mengagregat dengan nilai atribut yang dikongsi

Dalam pengaturcaraan yang berorientasikan objek, keadaan pelbagai objek yang berkongsi atribut khusus adalah perkara biasa. Sebagai contoh, kelas "Orang" mengandungi "ID" dan senarai kereta. Untuk agregat kereta yang jelas dan cekap yang berkaitan dengan setiap ID unik, kita boleh menggunakan pengendali "GroupBy" Linq.

linq GroupBy Operating Watak

pengendali kumpulan membahagikan urutan objek ke dalam kumpulan yang lebih kecil mengikut nilai kekunci yang ditentukan. Dalam kategori "orang" kami, kami boleh menggunakan harta "personid" sebagai kunci kepada objek kumpulan. Ini secara berkesan akan mewujudkan struktur yang serupa dengan kamus, di mana kunci adalah satu -satunya nilai "personid", dan nilai adalah senarai nilai "kereta" yang berkaitan dengan setiap "personid".

Contoh kod

Untuk mengumpulkan objek "orang" dan mengambil senarai kereta yang sepadan mengikut "personid", kita boleh menggunakan ekspresi pertanyaan LINQ berikut:

atau, kita boleh menggunakan ekspresi non -query untuk mencapai hasil yang sama:

<code class="language-csharp">var results = from p in persons
              group p.car by p.PersonId into g
              select new { PersonId = g.Key, Cars = g.ToList() };</code>
Hasil

<code class="language-csharp">var results = persons.GroupBy(
    p => p.PersonId, 
    p => p.car,
    (key, g) => new { PersonId = key, Cars = g.ToList() });</code>
pembolehubah "hasil" kini akan mengandungi koleksi objek tanpa nama, yang mempunyai dua atribut:

"personid": satu -satunya id seseorang

"kereta": senarai semua kereta yang dimiliki oleh orang itu

  • Dengan lelaran koleksi "Hasil", kita boleh mendapatkan maklumat yang diperlukan untuk setiap "personid" yang unik.
  • Pertimbangan lain

Untuk selaras dengan perjanjian penamaan.

Perbandingan perbandingan

atau, anda boleh menggunakan kaedah "Lookup" dan bukannya "GroupBy" untuk mencapai hasil yang sama. "Lookup" dengan berkesan mewujudkan struktur kamus, di mana kunci adalah satu -satunya nilai "personid", dan nilai adalah koleksi nilai "kereta" yang berkaitan dengan setiap "personid". Untuk menggunakan "carian" untuk mengambil kereta kereta, kita boleh menggunakan sintaks berikut:

Atas ialah kandungan terperinci Bagaimanakah pengendali kumpulan Linq dapat mengagregatkan objek secara efisien berdasarkan nilai harta yang dikongsi?. 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