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
, , Or
AndAlso
, 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