Where – klauzule (Visual Basic)

Určuje podmínku filtrování pro dotaz.

Syntax

Where condition  

Součásti

condition
Povinná hodnota. Výraz, který určuje, zda jsou hodnoty pro aktuální položku v kolekci zahrnuty do výstupní kolekce. Výraz se musí vyhodnotit Boolean na hodnotu nebo ekvivalent Boolean hodnoty. Pokud se podmínka vyhodnotí jako , je prvek zahrnutý ve výsledku dotazu. V opačném případě je prvek vyloučen True z výsledku dotazu.

Poznámky

Klauzule Where umožňuje filtrovat data dotazů výběrem pouze prvků, které splňují určitá kritéria. Prvky, jejichž hodnoty způsobují Where vyhodnocení klauzule , True jsou zahrnuty ve výsledku dotazu; ostatní prvky jsou vyloučeny. Výraz, který se používá v klauzuli , musí být vyhodnocen jako nebo ekvivalent typu , jako je například celé číslo, jehož výsledkem je hodnota Where Boolean Boolean False nula. V klauzuli můžete kombinovat více výrazů pomocí logických operátorů, jako jsou Where , , , , a And Or AndAlso OrElse Is IsNot .

Ve výchozím nastavení se výrazy dotazů nevyhodnocují, dokud se k nim nepřistupuje – například když jsou vázané na data nebo procházené ve For smyčce. Výsledkem je, že Where klauzule se nevyhodnotí, dokud se k dotazu nepřistupuje. Pokud máte hodnoty, které jsou pro dotaz použité v klauzuli externí, ujistěte se, že se v době spuštění dotazu v klauzuli používá Where Where příslušná hodnota. Další informace o spouštění dotazů najdete v tématu Writing Your First LINQ Query.

Můžete volat funkce v rámci klauzule a provést výpočet nebo operaci s hodnotou Where z aktuálního prvku v kolekci. Volání funkce v klauzuli může způsobit, že se dotaz spustí okamžitě, když je definovaný, a ne Where při přístupu. Další informace o spouštění dotazů najdete v tématu Writing Your First LINQ Query.

Příklad 1

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

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á logické And Or operátory a v Where klauzuli .

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é