Where Clause (Visual Basic)

Egy lekérdezés szűrési feltételét adja meg.

Syntax

Where condition  

Részek

condition
Szükséges. Egy kifejezés, amely meghatározza, hogy a gyűjtemény aktuális elemének értékei szerepelnek-e a kimeneti gyűjteményben. A kifejezésnek egy értéknek Boolean vagy egy értéknek megfelelőnek Boolean kell lennie. Ha a feltétel kiértékelése így Truetörténik, az elem szerepel a lekérdezés eredményében, ellenkező esetben az elem ki van zárva a lekérdezés eredményéből.

Megjegyzések

A Where záradék lehetővé teszi a lekérdezési adatok szűrését úgy, hogy csak bizonyos feltételeknek megfelelő elemeket választ ki. Azok az elemek, amelyek értékei a Where záradék kiértékelését True okozzák, szerepelnek a lekérdezés eredményében; a többi elem ki van zárva. A záradékban Where használt kifejezésnek egy vagy azzal egyenértékűnek Booleankell lennieBoolean, például egy egész számnakFalse, amely akkor értékeli ki, ha értéke nulla. Egy záradékban Where több kifejezést is kombinálhat olyan logikai operátorok használatával, mint Anda , Or, AndAlso, OrElse, Isés IsNot.

Alapértelmezés szerint a lekérdezési kifejezések nem lesznek kiértékelve, amíg el nem érik őket – például amikor adathoz kötöttek vagy egy cikluson For keresztül iteratedálják őket. Ennek eredményeképpen a Where záradék csak a lekérdezés eléréséig lesz kiértékelve. Ha a záradékban Where használt lekérdezésen kívüli értékekkel rendelkezik, győződjön meg arról, hogy a megfelelő értéket használja a Where záradék a lekérdezés végrehajtásakor. A lekérdezések végrehajtásával kapcsolatos további információkért lásd : Az első LINQ-lekérdezés írása.

A záradékon belüli Where függvényeket meghívva számítást vagy műveletet hajthat végre a gyűjtemény aktuális eleméből származó értéken. Ha egy függvényt meghív egy Where záradékban, akkor a lekérdezés azonnal végrehajtható lesz, amikor a lekérdezést definiálják, és nem azt, hogy mikor érik el. A lekérdezések végrehajtásával kapcsolatos további információkért lásd : Az első LINQ-lekérdezés írása.

1. példa

Az alábbi lekérdezési kifejezés egy záradékkal From deklarál egy tartományváltozót cust a customers gyűjtemény minden Customer objektumához. A Where záradék a tartományváltozó használatával korlátozza a kimenetet a megadott régióból származó ügyfelek számára. A For Each hurok megjeleníti az egyes ügyfelek cégnevét a lekérdezés eredményében.

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

2. példa

Az alábbi példa a záradékban Where használt és Or logikai operátorokat használjaAnd.

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

Lásd még