Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah LINQ Boleh Mengumpul Data dan Mengira Kejadian dengan Cekap Dalam Setiap Kumpulan?

Bagaimanakah LINQ Boleh Mengumpul Data dan Mengira Kejadian dengan Cekap Dalam Setiap Kumpulan?

DDD
Lepaskan: 2025-01-22 00:41:08
asal
300 orang telah melayarinya

How Can LINQ Efficiently Group Data and Count Occurrences Within Each Group?

Penggabungan dan pengelompokan data LINQ: penjelasan terperinci tentang kaedah yang cekap

LINQ (Language Integrated Query) menyediakan cara yang berkuasa dan ringkas untuk membuat pertanyaan dan memanipulasi data dalam pelbagai senario. Salah satu tugas biasa ialah mengumpulkan data berdasarkan kriteria tertentu dan mengira bilangan kejadian dalam setiap kumpulan.

Menggunakan LINQ untuk pengumpulan dan pengiraan data

Andaikan terdapat set data bernama UserInfo, mengandungi medan seperti nama, metrik, hari dan other_metric. Untuk mengisih mengikut nilai metrik dan mendapatkan kiraan metrik, anda boleh menggunakan sintaks LINQ berikut:

<code class="language-csharp">var groupMetrics = 
    from info in data // 从数据源开始
    group info by info.metric into grp // 按'metric'字段分组
    select new { Key = grp.Key, Count = grp.Count() }; // 选择键和计数</code>
Salin selepas log masuk

Pertanyaan ini melakukan perkara berikut:

  1. Klausa GroupBy mengumpulkan UserInfo objek berdasarkan nilai metrik untuk menjana satu siri kumpulan.
  2. Klausa Pilih memproyeksikan setiap kumpulan ke dalam jenis tanpa nama, yang mempunyai dua sifat: Kunci (mewakili nilai metrik) dan Kiraan (mewakili bilangan kejadian).
  3. Klausa OrderBy terakhir mengisih keputusan dalam tertib menaik mengikut nilai metrik.

Selepas melaksanakan pertanyaan ini, anda akan mendapat senarai yang mengandungi nilai metrik dan kiraan sepadannya, sekali gus menyediakan ringkasan taburan metrik dalam set data.

Hasil pengumpulan tersuai

Penyelesaian di atas menggunakan jenis tanpa nama untuk membina hasil terkumpul. Walau bagaimanapun, anda juga boleh menentukan kelas tersuai untuk mewakili data terkumpul, memberikan anda lebih kawalan ke atas format output.

Penyelesaian lain

Alternatif menggunakan LINQ kepada SQL disebut dalam soalan asal:

<code class="language-csharp">var pl = from r in info
         orderby r.metric    
         group r by r.metric into grp
         select new { key = grp.Key, cnt = grp.Count()};</code>
Salin selepas log masuk

Walaupun kedua-dua penyelesaian mencapai matlamat untuk mengumpulkan mengikut metrik dan mengira kejadian, sintaks LINQ kepada SQL direka khusus untuk menanyakan pangkalan data, manakala sintaks LINQ tulen boleh digunakan pada mana-mana koleksi terhitung objek UserInfo. Kaedah yang anda pilih bergantung pada konteks dan sumber data yang anda gunakan.

Atas ialah kandungan terperinci Bagaimanakah LINQ Boleh Mengumpul Data dan Mengira Kejadian dengan Cekap Dalam Setiap Kumpulan?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan