Поделиться через


Предложение 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

Другие ресурсы

Запросы (Visual Basic)