Where 子句 (Visual Basic)
指定查詢的篩選條件。
Where condition
組件
- condition
必要項。運算式,用於判斷集合中目前項目的值是否要納入輸出集合。此運算式必須評估為 Boolean 值或 Boolean 值的對等用法。如果條件評估為 True,則會將項目納入查詢結果中,否則會將項目排除在查詢結果之外。
備註
Where 子句可讓您只選取符合特定準則的項目,因此可以用來篩選查詢資料。會使 Where 子句評估為 True 的項目都會併入查詢結果中,其他項目則會被排除。Where 子句中的運算式必須評估為 Boolean 或 Boolean 的對等用法,例如當值為零時會評估為 False 的 Integer。您可以使用 And、Or、AndAlso、OrElse、Is 和 IsNot 之類的邏輯運算子 (Logical Operator),在 Where 子句中合併多個運算式。
根據預設,查詢運算式需有存取活動才會受到評估,例如,查詢運算式為資料繫結或在 For 迴圈 (Loop) 中逐一查看時。因此,除非存取查詢,否則都不會評估 Where 子句。如果您在 Where 子句中用到查詢以外的值,請確定在執行查詢時,Where 子句中使用的值是適當的。如需查詢執行的詳細資訊,請參閱撰寫第一個 LINQ 查詢 (Visual Basic)。
您可以在 Where 子句中呼叫函式,以對集合中目前項目的值執行計算或作業。在 Where 子句中呼叫函式會使查詢在進行定義時就立即執行,而不是等到進行存取時才執行。如需查詢執行的詳細資訊,請參閱撰寫第一個 LINQ 查詢 (Visual Basic)。
範例
下列查詢運算式使用 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
下列範例會使用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
請參閱
參考
For Each...Next 陳述式 (Visual Basic)