Method syntax menuliskan kueri sebagai rangkaian pemanggilan extension method dengan lambda expression. Inilah bentuk yang sebenarnya dihasilkan compiler dari query expression, sekaligus gaya yang wajib dipakai untuk operator seperti Count, First, dan Sum. Memahami gaya ini membuat kita dapat membaca kueri dalam kedua bentuk tanpa kebingungan.
Lambda dan Rantai Operator #
Kueri pada bab sebelumnya ditulis ulang di sini dengan method syntax:
record Produk(string Nama, string Kategori, int Harga, int Stok);
List<Produk> produk = new()
{
new Produk("Kopi Gayo", "Minuman", 25000, 40),
new Produk("Teh Melati", "Minuman", 15000, 60),
new Produk("Roti Bakar", "Makanan", 12000, 25),
new Produk("Susu UHT", "Minuman", 20000, 35),
new Produk("Keripik Singkong", "Makanan", 10000, 80)
};
var produkMurah = produk
.Where(p => p.Harga < 20000)
.OrderBy(p => p.Nama)
.Select(p => p.Nama);
foreach (string nama in produkMurah)
{
Console.WriteLine(nama);
}Output yang Dihasilkan:
Keripik Singkong
Roti Bakar
Teh MelatiMari kita bedah baris demi baris:
produk.Where(...):Whereadalah extension method padaIEnumerable<T>, sehingga kueri kini berupa pemanggilan method biasa.p => p.Harga < 20000: lambda expression mewakili fungsi penyaringan;padalah parameter, dan ekspresi di sebelah kanan adalah syaratnya..OrderBy(p => p.Nama): hasilWherelangsung disambung ke operator berikutnya; pola ini disebut chaining..Select(p => p.Nama): projection terakhir mengubah setiap elemen menjadi string nama.produkMurah: tipe hasilnyaIEnumerable<string>, sama persis dengan hasil query expression pada bab sebelumnya.
Kapan Memilih Method Syntax #
Method syntax menjadi pilihan utama pada kondisi berikut:
- Operator agregasi dan elemen (
Count,First,Sum) tidak punya padanan klausa di query expression. - Kueri yang syaratnya dinamis lebih mudah disusun bertahap, satu panggilan per syarat.
- Kedua gaya boleh dicampur, misalnya
(from p in produk where p.Stok > 0 select p).Count().
Kebiasaan lain yang membantu adalah menamai variabel hasil sesuai maksud kueri, misalnya produkMurah alih-alih hasil1, sehingga rantai operator dapat dibaca tanpa menelusuri tiap lambda.
Setelah bentuk asli kueri ini jelas, bab-bab berikutnya langsung memakai method syntax sebagai gaya utama dan menampilkan padanan query expression bila relevan.