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


Предложение Where (Visual Basic)

Указывает условие фильтрации для запроса.

Синтаксис

Where condition  

Детали

condition
Обязательный. Выражение, определяющее, включены ли значения текущего элемента в коллекцию выходных данных. Выражение должно оцениваться как Boolean значение, так и эквивалентное значению Boolean . Если условие оценивается True, элемент включается в результат запроса; в противном случае элемент исключается из результата запроса.

Замечания

Предложение Where позволяет фильтровать данные запроса, выбирая только элементы, соответствующие определенным критериям. Элементы, значения которых вызывают Where предложение для оценки True , включаются в результат запроса; другие элементы исключаются. Выражение, используемое в Where предложении, должно оцениваться как BooleanBooleanэквивалентное или равное ей, например целое число, которое вычисляется, False когда его значение равно нулю. Можно объединить несколько выражений Where в предложении с помощью логических операторов, таких как And, Or, AndAlso, OrElseIsи 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

См. также