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.
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() };
var results = persons.GroupBy( p => p.PersonId, p => p.car, (key, g) => new { PersonId = key, Cars = g.ToList() });
"personid": satu -satunya id seseorang
"kereta": senarai semua kereta yang dimiliki oleh orang itu
Untuk selaras dengan perjanjian penamaan.
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!