Agregat dan ToList
Hitung, jumlahkan, dan wujudkan
Agregat dan ToList adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.
Menghitung Elemen
Count mengembalikan jumlah elemen dalam suatu rangkaian. Dengan predikat, metode ini hanya menghitung elemen yang cocok.
Metode ini memaksa enumerasi, sehingga seluruh rangkaian dijelajahi untuk menghasilkan total — ini merupakan operasi agregasi.
using System;
using System.Linq;
int[] nums = { 1, 2, 3, 4, 5 };
Console.WriteLine(nums.Count());
Console.WriteLine(nums.Count(n => n > 2));Menjumlahkan Nilai
Sum menjumlahkan nilai numerik. Pada rangkaian numerik, metode ini menjumlahkan elemen-elemennya; dengan pemilih, metode ini menjumlahkan nilai hasil proyeksi dari setiap elemen.
Metode ini mengembalikan tipe numerik yang sama dengan sumber atau hasil pemilih.
using System;
using System.Linq;
using System.Collections.Generic;
record Order(int Qty, decimal Price);
var orders = new List<Order> { new(2, 5m), new(3, 4m) };
decimal total = orders.Sum(o => o.Qty * o.Price);
Console.WriteLine(total);Menghitung Nilai Rata-Rata
Average menghitung nilai rata-rata aritmetika. Seperti Sum, metode ini menerima pemilih opsional.
Hasilnya bertipe bilangan titik mengambang, misalnya double, bahkan saat sumbernya berupa bilangan bulat, sehingga tidak ada presisi yang hilang dalam pembagian.
using System;
using System.Linq;
int[] scores = { 80, 90, 100 };
double avg = scores.Average();
Console.WriteLine(avg);Nilai Minimum dan Maksimum
Min dan Max mengembalikan nilai terkecil dan terbesar. Dengan pemilih, keduanya mereduksi kunci hasil proyeksi.
Dalam .NET modern, MaxBy dan MinBy mengembalikan seluruh elemen dengan kunci ekstrem, bukan hanya nilai kuncinya.
using System;
using System.Linq;
using System.Collections.Generic;
record P(string Name, int Age);
var ps = new List<P> { new("Ana", 30), new("Bo", 22) };
var oldest = ps.MaxBy(p => p.Age);
Console.WriteLine(oldest!.Name);Masalah pada Rangkaian Kosong
Pada rangkaian kosong, Average, Min, dan Max untuk tipe nilai akan melempar InvalidOperationException. Sum mengembalikan nol dan Count mengembalikan nol.
Periksa terlebih dahulu dengan Any() atau gunakan DefaultIfEmpty sebelum menghitung rata-rata data yang mungkin kosong.
using System;
using System.Linq;
int[] empty = Array.Empty<int>();
double avg = empty.DefaultIfEmpty(0).Average();
Console.WriteLine(avg);Aggregate untuk Pelipatan Khusus
Aggregate mereduksi suatu rangkaian menjadi satu nilai menggunakan fungsi akumulator. Metode ini merupakan bentuk umum yang mendasari Sum dan metode lainnya.
Anda dapat memberikan nilai awal lalu menggabungkan setiap elemen ke dalam hasil yang terus diperbarui — berguna untuk perkalian, penggabungan, atau logika khusus.
using System;
using System.Linq;
int[] nums = { 1, 2, 3, 4 };
int product = nums.Aggregate(1, (acc, n) => acc * n);
Console.WriteLine(product);Melakukan Materialisasi dengan ToList
ToList langsung menjalankan kueri dan menyalin hasilnya ke dalam List<T>. Dengan sengaja, hal ini menghentikan eksekusi tertunda.
Gunakan metode ini untuk mengambil cuplikan yang stabil, menghindari menjalankan ulang alur pemrosesan yang mahal, atau mendapatkan fitur daftar seperti pengindeksan dan properti Count.
using System;
using System.Linq;
int[] nums = { 1, 2, 3, 4 };
var evens = nums.Where(n => n % 2 == 0).ToList();
evens.Add(6);
Console.WriteLine(string.Join(", ", evens));ToArray dan ToDictionary
Pematerialisasi terkait mencakup ToArray untuk larik berukuran tetap dan ToDictionary untuk pencarian berbasis kunci.
ToDictionary menerima pemilih kunci dan pemilih nilai opsional, lalu melempar kesalahan jika dua elemen menghasilkan kunci yang sama.
using System;
using System.Linq;
using System.Collections.Generic;
record P(string Name, int Age);
var ps = new List<P> { new("Ana", 30), new("Bo", 22) };
var byName = ps.ToDictionary(p => p.Name, p => p.Age);
Console.WriteLine(byName["Ana"]);Mengapa Melakukan Materialisasi
Kueri tertunda dijalankan ulang setiap kali diiterasi. Jika alur pemrosesan memerlukan biaya besar atau membaca sumber yang berubah, pengulangan tersebut dapat menyebabkan kesalahan dan memperlambat program.
Memanggil ToList satu kali menyimpan hasilnya, sehingga pembacaan berikutnya lebih cepat dan konsisten.
using System;
using System.Linq;
int runs = 0;
int[] nums = { 1, 2, 3 };
var list = nums.Select(n => { runs++; return n; }).ToList();
foreach (var _ in list) { }
foreach (var _ in list) { }
Console.WriteLine(runs);First, Tunggal, dan Any
Operator elemen juga memaksa eksekusi. First mengembalikan kecocokan pertama dan melempar kesalahan jika tidak ada, FirstOrDefault mengembalikan nilai bawaan, sedangkan Single mengharuskan tepat satu elemen.
Any memberi tahu Anda apakah suatu rangkaian memiliki elemen yang cocok tanpa menghitung semuanya.
using System;
using System.Linq;
int[] nums = { 3, 8, 5, 12 };
int firstBig = nums.First(n => n > 7);
bool hasOdd = nums.Any(n => n % 2 == 1);
Console.WriteLine($"{firstBig} {hasOdd}");Alur Pemrosesan Lengkap
Kueri nyata merangkai penyaringan, proyeksi, pengurutan, dan agregasi, yang sering kali diakhiri dengan pematerialisasi.
Bacalah dari atas ke bawah: saring, bentuk data, urutkan, lalu kumpulkan. ToList terakhir menjalankan seluruh alur pemrosesan satu kali.
using System;
using System.Linq;
using System.Collections.Generic;
record Sale(string City, int Amt);
var sales = new List<Sale> { new("NY", 5), new("LA", 3), new("NY", 9) };
var top = sales.Where(s => s.Amt > 4)
.OrderByDescending(s => s.Amt)
.Select(s => s.City)
.ToList();
Console.WriteLine(string.Join(", ", top));Pemeriksaan Singkat
Berikan alasan tentang eksekusi tertunda dan materialisasi.
Ringkasan
Agregasi mereduksi suatu rangkaian menjadi satu nilai: Count, Sum, Average, Min/Max, MinBy/MaxBy, serta Aggregate yang bersifat umum. Operasi-operasi ini memaksa eksekusi dan dapat melempar kesalahan pada sumber yang kosong.
ToList, ToArray, dan ToDictionary melakukan materialisasi hasil, menghentikan penundaan sehingga alur pemrosesan yang mahal hanya berjalan satu kali. Dengan ini, perangkat penyaringan dan proyeksi LINQ telah lengkap.
Belajar C# dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 93
- Pelajaran
- 346
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Agregat dan ToList” gratis?
Ya — teks lengkap “Agregat dan ToList” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Agregat dan ToList”?
Hitung, jumlahkan, dan wujudkan Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C# Academy?
Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Agregat dan ToList” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?
Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- WHERE dan Pemfilteran
- SELECT dan Proyeksi
- OrderBy dan Pengelompokan
- Agregat dan ToList