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

Задает условие фильтрации для запроса.Specifies the filtering condition for a query.

СинтаксисSyntax

Where condition  

ЧастиParts

condition
Обязательный.Required. Выражение, определяющее, включаются ли значения для текущего элемента в коллекции в выходную коллекцию.An expression that determines whether the values for the current item in the collection are included in the output collection. Выражение должно иметь значение Boolean или эквивалент значения Boolean.The expression must evaluate to a Boolean value or the equivalent of a Boolean value. Если условие принимает значение True, элемент включается в результат запроса. в противном случае элемент исключается из результата запроса.If the condition evaluates to True, the element is included in the query result; otherwise, the element is excluded from the query result.

ПримечанияRemarks

Предложение Where позволяет фильтровать данные запроса, выбирая только те элементы, которые соответствуют определенным условиям.The Where clause enables you to filter query data by selecting only elements that meet certain criteria. Элементы, значения которых приводят к вычислению предложения Where для вычисления True, включаются в результат запроса; другие элементы исключаются.Elements whose values cause the Where clause to evaluate to True are included in the query result; other elements are excluded. Выражение, используемое в предложении Where, должно возвращать Boolean или эквивалент Boolean, например целое число, результатом которого является False, если его значение равно нулю.The expression that is used in a Where clause must evaluate to a Boolean or the equivalent of a Boolean, such as an Integer that evaluates to False when its value is zero. В предложении Where можно объединить несколько выражений, используя логические операторы, такие как And, Or, AndAlso, OrElse, Is и IsNot.You can combine multiple expressions in a Where clause by using logical operators such as And, Or, AndAlso, OrElse, Is, and IsNot.

По умолчанию выражения запроса не оцениваются до тех пор, пока они не будут доступны, например, когда они привязаны к данным или просматриваются в цикле For.By default, query expressions are not evaluated until they are accessed—for example, when they are data-bound or iterated through in a For loop. В результате предложение Where не вычисляется до тех пор, пока не будет осуществлен доступ к запросу.As a result, the Where clause is not evaluated until the query is accessed. Если имеются внешние значения для запроса, используемые в предложении Where, убедитесь, что соответствующее значение используется в предложении Where во время выполнения запроса.If you have values external to the query that are used in the Where clause, ensure that the appropriate value is used in the Where clause at the time the query is executed. Дополнительные сведения о выполнении запросов см. в разделе Написание первого запроса LINQ.For more information about query execution, see Writing Your First LINQ Query.

Можно вызывать функции в предложении Where для выполнения вычисления или операции со значением из текущего элемента в коллекции.You can call functions within a Where clause to perform a calculation or operation on a value from the current element in the collection. Вызов функции в предложении Where может привести к немедленному выполнению запроса, если он определен, а не при доступе к нему.Calling a function in a Where clause can cause the query to be executed immediately when it is defined instead of when it is accessed. Дополнительные сведения о выполнении запросов см. в разделе Написание первого запроса LINQ.For more information about query execution, see Writing Your First LINQ Query.

ПримерExample

Следующее выражение запроса использует предложение From для объявления переменной диапазона cust для каждого объекта Customer в коллекции customers.The following query expression uses a From clause to declare a range variable cust for each Customer object in the customers collection. Предложение Where использует переменную диапазона для ограничения выходных данных для клиентов из указанной области.The Where clause uses the range variable to restrict the output to customers from the specified region. Цикл For Each отображает название компании для каждого клиента в результатах запроса.The For Each loop displays the company name for each customer in the query result.

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

ПримерExample

В следующем примере используются логические операторы And и Or в предложении Where.The following example uses And and Or logical operators in the Where clause.

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

См. такжеSee also