Where — Klauzula (Visual Basic)

Określa warunek filtrowania zapytania.

Składnia

Where condition  

generatora

condition
Wymagany. Wyrażenie określające, czy wartości bieżącego elementu w kolekcji znajdują się w kolekcji wyjściowej. Wyrażenie musi mieć wartość Boolean lub odpowiednik Boolean wartości. Jeśli warunek zwróci wartość True, element zostanie uwzględniony w wyniku zapytania. W przeciwnym razie element zostanie wykluczony z wyniku zapytania.

Uwagi

Klauzula Where umożliwia filtrowanie danych zapytań, wybierając tylko elementy spełniające określone kryteria. Elementy, których wartości powodują, że klauzula Where ma zostać obliczona True , są uwzględniane w wyniku zapytania; inne elementy są wykluczone. Wyrażenie, które jest używane w Where klauzuli, musi obliczyć wartość lub Boolean odpowiednik elementu Boolean, takiego jak liczba całkowita, która daje w wyniku, False gdy jego wartość jest równa zero. Można połączyć wiele wyrażeń w klauzuli Where przy użyciu operatorów logicznych, takich jak And, , OrAndAlso, OrElse, Is, i IsNot.

Domyślnie wyrażenia zapytań nie są oceniane do momentu uzyskania do nich dostępu — na przykład gdy są powiązane z danymi lub iterowane w For pętli. W związku z tym klauzula Where nie jest oceniana do momentu uzyskania dostępu do zapytania. Jeśli masz wartości zewnętrzne dla zapytania, które są używane w Where klauzuli , upewnij się, że odpowiednia wartość jest używana w Where klauzuli podczas wykonywania zapytania. Aby uzyskać więcej informacji na temat wykonywania zapytań, zobacz Pisanie pierwszego zapytania LINQ.

Funkcje w Where klauzuli można wywołać, aby wykonać obliczenia lub operację na wartości z bieżącego elementu w kolekcji. Wywołanie funkcji w klauzuli Where może spowodować natychmiastowe wykonanie zapytania, gdy jest zdefiniowane zamiast, gdy jest uzyskiwany dostęp. Aby uzyskać więcej informacji na temat wykonywania zapytań, zobacz Pisanie pierwszego zapytania LINQ.

Przykład 1

Poniższe wyrażenie zapytania używa klauzuli From do deklarowania zmiennej cust zakresu dla każdego Customer obiektu w kolekcji customers . Klauzula Where używa zmiennej zakresu, aby ograniczyć dane wyjściowe do klientów z określonego regionu. Pętla For Each wyświetla nazwę firmy dla każdego klienta w wyniku zapytania.

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

Przykład 2

W poniższym przykładzie użyto And operatorów logicznych i Or w 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

Zobacz też