Where – klauzule (Visual Basic)

Určuje podmínku filtrování dotazu.

Syntaxe

Where condition  

Součástky

condition
Povinný: Výraz, který určuje, zda jsou hodnoty aktuální položky v kolekci zahrnuty do výstupní kolekce. Výraz se musí vyhodnotit na Boolean hodnotu nebo ekvivalent Boolean hodnoty. Pokud se podmínka vyhodnotí jako True, prvek je součástí výsledku dotazu; jinak je prvek vyloučen z výsledku dotazu.

Poznámky

Klauzule Where umožňuje filtrovat data dotazu výběrem pouze prvků, které splňují určitá kritéria. Prvky, jejichž hodnoty způsobí Where , že klauzule se vyhodnotí True jako zahrnutá do výsledku dotazu; ostatní prvky jsou vyloučeny. Výraz, který se používá v Where klauzuli, se musí vyhodnotit na Boolean hodnotu nebo ekvivalent výrazu Boolean, například integer, který se vyhodnotí jako False hodnota nula. V klauzuli můžete kombinovat více výrazů pomocí logických Where operátorů, jako Andjsou , Or, AndAlso, OrElse, Isa IsNot.

Ve výchozím nastavení se výrazy dotazu nevyhodnocují, dokud se k nim nepřistupuje – například když jsou vázané na data nebo iterated ve smyčce For . V důsledku toho se klauzule nevyhodnocuje, Where dokud se k dotazu nepřistupuje. Pokud máte hodnoty externí pro dotaz, který se používá v Where klauzuli, ujistěte se, že se příslušná hodnota použije v Where klauzuli v době, kdy se dotaz spustí. Další informace o provádění dotazů naleznete v tématu Zápis prvního dotazu LINQ.

Funkce v rámci Where klauzule můžete volat k provedení výpočtu nebo operace s hodnotou z aktuálního prvku v kolekci. Volání funkce v Where klauzuli může způsobit, že se dotaz spustí okamžitě, když je definován místo přístupu. Další informace o provádění dotazů naleznete v tématu Zápis prvního dotazu LINQ.

Příklad 1

Následující výraz dotazu používá From klauzuli k deklaraci proměnné cust rozsahu pro každý Customer objekt v kolekci customers . Klauzule Where používá proměnnou rozsahu k omezení výstupu pro zákazníky ze zadané oblasti. Smyčka For Each zobrazí název společnosti pro každého zákazníka ve výsledku dotazu.

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

Příklad 2

Následující příklad používá And a Or logické operátory v klauzuli 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

Viz také