0Pricing
C# Academy · Pelajaran

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

  1. WHERE dan Pemfilteran
  2. SELECT dan Proyeksi
  3. OrderBy dan Pengelompokan
  4. Agregat dan ToList
← Kembali ke C# Academy