Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
where Gunakan klausa dalam ekspresi kueri untuk menentukan elemen mana dari sumber data yang akan dikembalikan. Ini menerapkan kondisi Boolean (predikat) ke setiap elemen sumber (direferensikan oleh variabel rentang) dan mengembalikan elemen-elemen yang kondisi yang ditentukan benar. Ekspresi kueri tunggal dapat berisi beberapa where klausa, dan satu klausa dapat berisi beberapa subekspresi predikat.
Referensi bahasa C# mendokumentasikan versi bahasa C# yang paling baru dirilis. Ini juga berisi dokumentasi awal untuk fitur dalam pratinjau publik untuk rilis bahasa yang akan datang.
Dokumentasi mengidentifikasi fitur apa pun yang pertama kali diperkenalkan dalam tiga versi terakhir bahasa atau dalam pratinjau publik saat ini.
Petunjuk / Saran
Untuk menemukan kapan fitur pertama kali diperkenalkan di C#, lihat artikel tentang riwayat versi bahasa C#.
Dalam contoh berikut, where klausa memfilter semua angka kecuali yang kurang dari lima. Jika Anda menghapus where klausa, kueri mengembalikan semua angka dari sumber data. Ekspresi num < 5 adalah predikat bahwa kueri berlaku untuk setiap elemen.
class WhereSample
{
static void Main()
{
// Simple data source. Arrays support IEnumerable<T>.
int[] numbers = [5, 4, 1, 3, 9, 8, 6, 7, 2, 0];
// Simple query with one predicate in where clause.
var queryLowNums =
from num in numbers
where num < 5
select num;
// Execute the query.
foreach (var s in queryLowNums)
{
Console.Write(s.ToString() + " ");
}
}
}
//Output: 4 1 3 2 0
Dalam satu where klausul, Anda dapat menentukan predikat sebanyak yang diperlukan dengan menggunakan && dan || operator. Dalam contoh berikut, kueri menentukan dua predikat untuk memilih hanya angka genap yang kurang dari lima.
class WhereSample2
{
static void Main()
{
// Data source.
int[] numbers = [5, 4, 1, 3, 9, 8, 6, 7, 2, 0];
// Create the query with two predicates in where clause.
var queryLowNums2 =
from num in numbers
where num < 5 && num % 2 == 0
select num;
// Execute the query
foreach (var s in queryLowNums2)
{
Console.Write(s.ToString() + " ");
}
Console.WriteLine();
// Create the query with two where clause.
var queryLowNums3 =
from num in numbers
where num < 5
where num % 2 == 0
select num;
// Execute the query
foreach (var s in queryLowNums3)
{
Console.Write(s.ToString() + " ");
}
}
}
// Output:
// 4 2 0
// 4 2 0
where Klausa dapat berisi satu atau beberapa metode yang mengembalikan nilai Boolean. Dalam contoh berikut, where klausul menggunakan metode untuk menentukan apakah nilai variabel rentang saat ini genap atau ganjil.
class WhereSample3
{
static void Main()
{
// Data source
int[] numbers = [5, 4, 1, 3, 9, 8, 6, 7, 2, 0];
// Create the query with a method call in the where clause.
// Note: This won't work in LINQ to SQL unless you have a
// stored procedure that is mapped to a method by this name.
var queryEvenNums =
from num in numbers
where IsEven(num)
select num;
// Execute the query.
foreach (var s in queryEvenNums)
{
Console.Write(s.ToString() + " ");
}
}
// Method may be instance method or static method.
static bool IsEven(int i) => i % 2 == 0;
}
//Output: 4 8 6 2 0
Komentar
Klausa where adalah mekanisme pemfilteran. Anda dapat memposisikannya hampir di mana saja dalam ekspresi kueri, kecuali tidak bisa menjadi klausa pertama atau terakhir.
where Klausa dapat muncul baik sebelum atau sesudah klausa grup tergantung pada apakah Anda perlu memfilter elemen sumber sebelum atau sesudah dikelompokkan.
Jika Anda menentukan predikat yang tidak valid untuk elemen di sumber data, kueri akan menghasilkan kesalahan waktu kompilasi. Kesalahan ini adalah salah satu manfaat dari pemeriksaan jenis yang kuat yang disediakan LINQ.
Pada waktu kompilasi, where kata kunci dikonversi menjadi panggilan ke Where metode Operator Kueri Standar.