Where 子句 (Visual Basic)
指定查询的筛选条件。
语法
Where condition
组成部分
condition
必需。 确定集合中当前项的值是否包含在输出集合中的表达式。 表达式的计算结果必须为 Boolean
值或 Boolean
值的等效项。 如果条件的计算结果为 True
,则元素将包含在查询结果中;否则,将从查询结果中排除元素。
注解
使用 Where
子句可以通过仅选择符合特定条件的元素来筛选查询数据。 其值导致 Where
子句的计算结果为 True
的元素包含在查询结果中;将排除其他元素。 Where
子句中使用的表达式的计算结果必须为 Boolean
或 Boolean
的等效项,例如,其值为零时计算结果为 False
的整数。 可以通过使用逻辑运算符(例如 And
、Or
、AndAlso
、OrElse
、Is
和 IsNot
)将多个表达式组合到 Where
子句中。
默认情况下,在访问查询表达式之前(例如,当它们在 For
循环中进行数据绑定或循环访问时),不会对其进行计算。 因此,在访问查询之前,不会计算 Where
子句。 如果在 Where
子句中使用的查询外部存在值,请确保在执行查询时在 Where
子句中使用相应的值。 有关查询执行的详细信息,请参阅编写你的第一个 LINQ 查询。
可以在 Where
子句中调用函数,以对集合中当前元素的值执行计算或操作。 在 Where
子句中调用函数可能会导致查询在定义时(而不是在访问时)立即执行。 有关查询执行的详细信息,请参阅编写你的第一个 LINQ 查询。
示例 1
下面的查询表达式使用 From
子句为 customers
集合中的每个 Customer
对象声明范围变量 cust
。 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
下面的示例在 Where
子句中使用 And
和 Or
逻辑运算符。
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