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