Предложение Where (Visual Basic)
Указывает условие фильтрации для запроса.
Синтаксис
Where condition
Детали
condition
Обязательный. Выражение, определяющее, включены ли значения текущего элемента в коллекцию выходных данных. Выражение должно оцениваться как Boolean
значение, так и эквивалентное значению Boolean
. Если условие оценивается True
, элемент включается в результат запроса; в противном случае элемент исключается из результата запроса.
Замечания
Предложение Where
позволяет фильтровать данные запроса, выбирая только элементы, соответствующие определенным критериям. Элементы, значения которых вызывают Where
предложение для оценки True
, включаются в результат запроса; другие элементы исключаются. Выражение, используемое в Where
предложении, должно оцениваться как Boolean
Boolean
эквивалентное или равное ей, например целое число, которое вычисляется, False
когда его значение равно нулю. Можно объединить несколько выражений Where
в предложении с помощью логических операторов, таких как And
, Or
, AndAlso
, OrElse
Is
и IsNot
.
По умолчанию выражения запросов не оцениваются до тех пор, пока они не будут доступны, например, когда они привязаны к данным или выполняются в цикле For
. В результате Where
предложение не вычисляется до получения доступа к запросу. Если у вас есть значения, внешние для запроса, используемого в Where
предложении, убедитесь, что соответствующее значение используется в Where
предложении во время выполнения запроса. Дополнительные сведения о выполнении запросов см. в статье "Написание первого запроса LINQ".
Функции в Where
предложении можно вызывать для выполнения вычисления или операции со значением из текущего элемента в коллекции. Вызов функции в Where
предложении может привести к выполнению запроса немедленно, когда он определен вместо доступа. Дополнительные сведения о выполнении запросов см. в статье "Написание первого запроса LINQ".
Пример 1
Следующее выражение запроса использует From
предложение для объявления переменной cust
диапазона для каждого Customer
объекта в customers
коллекции. Предложение Where
использует переменную диапазона для ограничения выходных данных клиентам из указанного региона. В цикле For Each
отображается имя компании для каждого клиента в результате запроса.
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
В следующем примере используются And
и Or
логические операторы в предложении 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