Bagikan melalui


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

Lihat juga