Klausul Where (Visual Basic)
Menentukan kondisi pemfilteran untuk kueri.
Sintaks
Where condition
Generator
condition
Harus diisi. Ekspresi yang menentukan apakah nilai untuk item saat ini dalam koleksi disertakan dalam koleksi output. Ekspresi harus mengevaluasi ke nilai Boolean
atau nilai yang ekuivalen dari nilai Boolean
. Jika kondisi mengevaluasi ke True
, elemen disertakan dalam hasil kueri; jika tidak, elemen dikecualikan dari hasil kueri.
Keterangan
Klausul Where
memungkinkan Anda memfilter data kueri dengan memilih hanya elemen yang memenuhi kriteria tertentu. Elemen yang nilainya menyebabkan klausul Where
dievaluasi ke True
disertakan dalam hasil kueri; elemen lain dikecualikan. Ekspresi yang digunakan dalam klausul Where
harus mengevaluasi ke Boolean
atau yang ekuivalen dengan Boolean
, seperti integer yang mengevaluasi ke False
kapan nilainya nol. Anda dapat menggabungkan beberapa ekspresi dalam klausul Where
dengan menggunakan operator logis seperti And
, Or
, AndAlso
, OrElse
, Is
, dan IsNot
.
Secara default, ekspresi kueri tidak dievaluasi hingga diakses—misalnya, saat terikat data atau diulang dalam perulangan For
. Akibatnya, klausul Where
tidak dievaluasi sampai kueri diakses. Jika Anda memiliki nilai di luar kueri yang digunakan dalam klausul Where
, pastikan bahwa nilai yang sesuai digunakan dalam klausul Where
pada saat kueri dijalankan. Untuk informasi selengkapnya tentang eksekusi kueri, lihat Menulis Kueri LINQ Pertama Anda.
Anda dapat memanggil fungsi dalam klausul Where
untuk melakukan penghitungan atau operasi pada nilai dari elemen saat ini dalam koleksi. Memanggil fungsi dalam klausul Where
dapat menyebabkan kueri segera dijalankan ketika didefinisikan alih-alih ketika diakses. Untuk informasi selengkapnya tentang eksekusi kueri, lihat Menulis Kueri LINQ Pertama Anda.
Contoh 1
Ekspresi kueri berikut menggunakan klausul From
untuk mendeklarasikan variabel rentang cust
untuk tiap objek Customer
dalam koleksi customers
. Klausul Where
menggunakan variabel rentang untuk membatasi output kepada pelanggan dari wilayah yang ditentukan. Pengulangan For Each
menampilkan nama perusahaan untuk setiap pelanggan dalam hasil kueri.
Sub DisplayCustomersForRegion(ByVal customers As List(Of Customer),
ByVal region As String)
Dim customersForRegion = From cust In customers
Where cust.Region = region
For Each cust In customersForRegion
Console.WriteLine(cust.CompanyName)
Next
End Sub
Contoh 2
Contoh berikut menggunakan operator logis And
dan Or
dalam klausul Where
.
Private Sub DisplayElements()
Dim elements As List(Of Element) = BuildList()
' Get a list of elements that have an atomic number from 12 to 14,
' or that have a name that ends in "r".
Dim subset = From theElement In elements
Where (theElement.AtomicNumber >= 12 And theElement.AtomicNumber < 15) _
Or theElement.Name.EndsWith("r")
Order By theElement.Name
For Each theElement In subset
Console.WriteLine(theElement.Name & " " & theElement.AtomicNumber)
Next
' Output:
' Aluminum 13
' Magnesium 12
' Silicon 14
' Sulfur 16
End Sub
Private Function BuildList() As List(Of Element)
Return New List(Of Element) From
{
{New Element With {.Name = "Sodium", .AtomicNumber = 11}},
{New Element With {.Name = "Magnesium", .AtomicNumber = 12}},
{New Element With {.Name = "Aluminum", .AtomicNumber = 13}},
{New Element With {.Name = "Silicon", .AtomicNumber = 14}},
{New Element With {.Name = "Phosphorous", .AtomicNumber = 15}},
{New Element With {.Name = "Sulfur", .AtomicNumber = 16}}
}
End Function
Public Class Element
Public Property Name As String
Public Property AtomicNumber As Integer
End Class