Where 子句 (Visual Basic)

指定查询的筛选条件。

语法

Where condition  

组成部分

condition
必需。 确定集合中当前项的值是否包含在输出集合中的表达式。 表达式的计算结果必须为 Boolean 值或 Boolean 值的等效项。 如果条件的计算结果为 True,则元素将包含在查询结果中;否则,将从查询结果中排除元素。

注解

使用 Where 子句可以通过仅选择符合特定条件的元素来筛选查询数据。 其值导致 Where 子句的计算结果为 True 的元素包含在查询结果中;将排除其他元素。 Where 子句中使用的表达式的计算结果必须为 BooleanBoolean 的等效项,例如,其值为零时计算结果为 False 的整数。 可以通过使用逻辑运算符(例如 AndOrAndAlsoOrElseIsIsNot)将多个表达式组合到 Where 子句中。

默认情况下,在访问查询表达式之前(例如,当它们在 For 循环中进行数据绑定或循环访问时),不会对其进行计算。 因此,在访问查询之前,不会计算 Where 子句。 如果在 Where 子句中使用的查询外部存在值,请确保在执行查询时在 Where 子句中使用相应的值。 有关查询执行的详细信息,请参阅编写你的第一个 LINQ 查询

可以在 Where 子句中调用函数,以对集合中当前元素的值执行计算或操作。 在 Where 子句中调用函数可能会导致查询在定义时(而不是在访问时)立即执行。 有关查询执行的详细信息,请参阅编写你的第一个 LINQ 查询

示例 1

下面的查询表达式使用 From 子句为 customers 集合中的每个 Customer 对象声明范围变量 custWhere 子句使用范围变量将输出限制为来自指定区域的客户。 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

下面的示例在 Where 子句中使用 AndOr 逻辑运算符。

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

另请参阅