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
Lepaskan: 2025-02-02 00:26:09
asal
244 orang telah melayarinya

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:

var results = from p in persons
              group p.car by p.PersonId into g
              select new { PersonId = g.Key, Cars = g.ToList() };
Salin selepas log masuk
<<> Hasil

var results = persons.GroupBy(
    p => p.PersonId, 
    p => p.car,
    (key, g) => new { PersonId = key, Cars = g.ToList() });
Salin selepas log masuk
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 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