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

Bagaimanakah Data Kumpulan LINQ dan Mengira Kejadian dengan Cekap?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-22 00:46:10647semak imbas

How Can LINQ Group Data and Count Occurrences Efficiently?

Gunakan LINQ untuk mengumpulkan dan mengira data dengan cekap

LINQ (Language Integrated Query) dalam C# menyediakan cara yang berkuasa untuk memanipulasi dan membuat pertanyaan data. Dalam situasi di mana anda perlu mengumpulkan dan mengira set data, LINQ menyediakan penyelesaian yang ringkas dan cekap.

Andaikan kami mempunyai set data yang mengandungi pengguna dan metrik serta tarikh yang berkaitan:

<code>UserInfo(姓名, 指标, 日期, 其他指标)

数据:
joe  1 2011/01/01 5
jane 0 2011/01/02 9
john 2 2011/01/03 0
jim  3 2011/01/04 1
jean 1 2011/01/05 3
jill 2 2011/01/06 5
jeb  0 2011/01/07 3
jenn 0 2011/01/08 7</code>

Matlamat kami adalah untuk mendapatkan jadual, dikumpulkan mengikut susunan penunjuk (0, 1, 2, 3...), dan menunjukkan jumlah bilangan kejadian setiap penunjuk.

Mengumpul dan mengira menggunakan LINQ

Untuk mencapai ini menggunakan LINQ, kita boleh menggunakan kaedah 'GroupBy' dan 'Select':

<code>foreach(var line in data.GroupBy(info => info.metric)
                        .Select(group => new { 
                             Metric = group.Key, 
                             Count = group.Count() 
                        })
                        .OrderBy(x => x.Metric))
{
     Console.WriteLine("{0} {1}", line.Metric, line.Count);
}</code>

Arahan:

  1. Kaedah 'GroupBy' digunakan pada set data, mengumpulkan mengikut atribut 'metrik'. Ini akan menghasilkan urutan kumpulan, setiap kumpulan mengandungi elemen dengan nilai 'metrik' yang sama.
  2. Kaedah 'Pilih' digunakan untuk menayangkan setiap kumpulan ke dalam objek tanpa nama baharu dengan dua sifat: 'Metrik' (kunci kumpulan) dan 'Count' (bilangan elemen dalam kumpulan).
  3. Kaedah 'OrderBy' mengisih objek tanpa nama dalam tertib menaik, diisih mengikut 'Metrik'.
  4. Hasilnya ialah jujukan objek tanpa nama, setiap objek mewakili metrik dan kiraannya.

Output:

<code>0 3
1 2
2 2
3 1</code>

Cara lain

Walaupun penyelesaian LINQ yang disediakan adalah cekap, ia boleh dipermudahkan lagi:

<code>var result = data.GroupBy(info => info.metric)
                 .Select(group => new { 
                      Metric = group.Key, 
                      Count = group.Count() 
                 })
                 .OrderBy(x => x.Metric);</code>

Satu-satunya perbezaan di sini ialah daripada menggunakan gelung 'foreach' untuk mengulangi keputusan, kami menetapkannya kepada pembolehubah yang dipanggil 'hasil'.

Isi penting

  • GroupBy() mencipta urutan kumpulan.
  • Select() Menayangkan kumpulan ke objek tanpa nama.
  • Count() mengembalikan bilangan elemen dalam kumpulan.
  • OrderBy() mengisih hasil mengikut atribut yang ditentukan.

Atas ialah kandungan terperinci Bagaimanakah Data Kumpulan LINQ dan Mengira Kejadian dengan Cekap?. 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