OrderBy dan Pengelompokan
Urutkan dan kelompokkan hasil
OrderBy dan Pengelompokan adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.
Mengurutkan dengan OrderBy
OrderBy mengurutkan urutan secara menaik berdasarkan kunci yang Anda pilih. Lambda mengembalikan nilai yang digunakan untuk pengurutan.
Operator ini mengembalikan urutan terurut baru dan bersifat stabil, artinya elemen dengan kunci yang sama mempertahankan urutan relatif aslinya.
using System;
using System.Linq;
int[] nums = { 4, 1, 3, 2 };
var sorted = nums.OrderBy(n => n);
Console.WriteLine(string.Join(", ", sorted));Urutan Menurun
OrderByDescending mengurutkan dari yang terbesar ke yang terkecil berdasarkan kunci yang dipilih.
Gunakan operator ini secara langsung, alih-alih mengurutkan secara menaik lalu membalik urutannya—cara ini menyatakan maksud dengan jelas dan melakukan pengurutan dalam satu lintasan.
using System;
using System.Linq;
int[] scores = { 70, 95, 60, 88 };
var ranked = scores.OrderByDescending(s => s);
Console.WriteLine(string.Join(", ", ranked));Mengurutkan Berdasarkan Properti
Untuk objek, pilih properti yang akan digunakan sebagai dasar pengurutan. OrderBy(p => p.Age) mengurutkan people dari yang termuda hingga yang tertua.
Kuncinya dapat berupa tipe apa pun yang dapat dibandingkan—angka, string, tanggal—atau tipe apa pun yang menerapkan IComparable.
using System;
using System.Linq;
using System.Collections.Generic;
record P(string Name, int Age);
var people = new List<P> { new("Ana", 30), new("Bo", 22) };
var byAge = people.OrderBy(p => p.Age);
foreach (var p in byAge) Console.WriteLine(p.Name);Pengurutan Sekunder dengan ThenBy
ThenBy menambahkan penentu seri. Setelah OrderBy, metode ini mengurutkan elemen yang memiliki kunci utama sama berdasarkan kunci kedua.
Anda dapat merangkai beberapa pemanggilan ThenBy/ThenByDescending untuk pengurutan bertingkat.
using System;
using System.Linq;
using System.Collections.Generic;
record P(string Name, int Age);
var people = new List<P> { new("Bo", 30), new("Ana", 30), new("Cy", 22) };
var ordered = people.OrderBy(p => p.Age).ThenBy(p => p.Name);
foreach (var p in ordered) Console.WriteLine($"{p.Age} {p.Name}");Mengapa Bukan OrderBy Kedua
Memanggil OrderBy dua kali tidak memberikan penentu seri — pemanggilan kedua mengurutkan ulang semuanya dan membuang urutan pertama.
Untuk pengurutan bertingkat, selalu gunakan ThenBy setelah OrderBy awal.
using System;
using System.Linq;
using System.Collections.Generic;
record P(string N, int A);
var ps = new List<P> { new("Bo", 30), new("Ana", 30) };
var wrong = ps.OrderBy(p => p.A).OrderBy(p => p.N);
foreach (var p in wrong) Console.WriteLine(p.N);Sintaks Kueri Pengurutan Berdasarkan
Sintaks kueri memiliki klausa orderby. Cantumkan beberapa kunci yang dipisahkan dengan koma, secara opsional disertai descending.
orderby p.Age, p.Name descending mengurutkan berdasarkan usia, lalu berdasarkan nama secara terbalik jika terjadi seri.
using System;
using System.Linq;
using System.Collections.Generic;
record P(string N, int A);
var ps = new List<P> { new("Bo", 30), new("Ana", 30), new("Cy", 22) };
var q = from p in ps orderby p.A, p.N select p.N;
Console.WriteLine(string.Join(", ", q));Pengelompokan dengan GroupBy
GroupBy membagi suatu rangkaian menjadi kelompok-kelompok yang memiliki kunci sama. Metode ini mengembalikan rangkaian IGrouping<TKey, TElement>.
Setiap kelompok menyediakan Key dan dapat diiterasi untuk mengakses elemen-elemen di dalam kelompok tersebut.
using System;
using System.Linq;
int[] nums = { 1, 2, 3, 4, 5, 6 };
var groups = nums.GroupBy(n => n % 2 == 0 ? "even" : "odd");
foreach (var g in groups)
Console.WriteLine($"{g.Key}: {string.Join(\",\", g)}");Kunci dan Anggota Kelompok
Key setiap kelompok mengidentifikasi partisi tersebut, dan iterasi terhadap kelompok menghasilkan anggotanya. Anda dapat langsung memanggil Count() pada suatu kelompok.
Inilah cara membuat histogram, rekapitulasi, dan rincian kategori.
using System;
using System.Linq;
string[] fruit = { "apple", "avocado", "banana", "cherry" };
var byLetter = fruit.GroupBy(f => f[0]);
foreach (var g in byLetter)
Console.WriteLine($"{g.Key}: {g.Count()}");Mengelompokkan lalu Memproyeksikan
Pola yang umum adalah memproyeksikan setiap kelompok menjadi objek ringkasan menggunakan Select setelah GroupBy.
Anda membaca Key lalu mengagregasikan anggotanya — misalnya menghitung jumlah atau menjumlahkan nilai untuk setiap kelompok.
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", 2) };
var totals = sales.GroupBy(s => s.City)
.Select(g => new { g.Key, Sum = g.Sum(x => x.Amt) });
foreach (var t in totals) Console.WriteLine($"{t.Key}={t.Sum}");GroupBy dengan Pemilih Elemen
GroupBy memiliki kelebihan metode yang menerima lambda kedua — yaitu pemilih elemen — yang menentukan data yang disimpan setiap kelompok, bukan hanya cara pengelompokannya.
Di sini, kita mengelompokkan berdasarkan kota, tetapi hanya menyimpan jumlahnya.
using System;
using System.Linq;
using System.Collections.Generic;
record Sale(string City, int Amt);
var sales = new List<Sale> { new("NY", 5), new("NY", 2) };
var g = sales.GroupBy(s => s.City, s => s.Amt);
foreach (var grp in g)
Console.WriteLine($"{grp.Key}: {string.Join(\",\", grp)}");Pengurutan dan Pengelompokan Bersifat Tertunda
OrderBy dan GroupBy sama-sama menggunakan eksekusi tertunda — keduanya dijalankan saat dilakukan enumerasi. Namun, perhatikan bahwa pengurutan dan pengelompokan harus membaca seluruh sumber untuk menghasilkan elemen pertama.
Jadi, tidak seperti Where, keduanya tidak memproses data secara mengalir; biayanya muncul saat iterasi pertama.
using System;
using System.Linq;
int[] nums = { 3, 1, 2 };
var q = nums.OrderBy(n => n);
Console.WriteLine("Query built");
Console.WriteLine(string.Join(", ", q));Pemeriksaan Singkat
Pikirkan tentang pengurutan bertingkat.
Ringkasan
OrderBy/OrderByDescending mengurutkan berdasarkan kunci; ThenBy menambahkan penentu seri. OrderBy kedua mengurutkan ulang data dan bukan merupakan penentu seri.
GroupBy membagi data menjadi objek-objek IGrouping yang memiliki Key dan anggota, yang sering kali diproyeksikan menjadi ringkasan. Keduanya dieksekusi secara tertunda, tetapi membaca seluruh sumber. Selanjutnya, kita akan melakukan agregasi dan materialisasi.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “OrderBy dan Pengelompokan” gratis?
Ya — teks lengkap “OrderBy dan Pengelompokan” 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 “OrderBy dan Pengelompokan”?
Urutkan dan kelompokkan hasil 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 3 dari 4.
Berapa lama pelajaran “OrderBy dan Pengelompokan” 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