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