From 子句 (Visual Basic)

更新:2007 年 11 月

指定一個或多個範圍變數以及要查詢的集合。

From element [ As type ] In collection [ _ ]
  [, element2 [ As type2 ] In collection2 [, ... ] ]

參數

  • element
    必要項。用於逐一查看集合中項目的「範圍變數」(Range Variable)。在查詢逐一查看 collection 時,範圍變數可用以參考 collection 的每個成員。必須是可列舉的型別。

  • type
    選擇項,element 的型別。如果沒有指定 type,則會從 collection 推斷 element 的型別。

  • collection
    必要項。參考要查詢的集合。必須是可列舉的型別。

備註

From 子句可用來識別查詢的來源資料,以及用以參考來源集合中的某個項目的變數。這些變數稱為「範圍變數」。除非在查詢中使用 Aggregate 子句表示只傳回彙總結果,否則查詢中一定要使用 From 子句。如需詳細資訊,請參閱 Aggregate 子句 (Visual Basic)

您可以在查詢中指定多個 From 子句,以識別要聯結 (Join) 的多個集合。指定多個集合時,這些集合會個別受到反覆查看,如果這些集合互相關聯,您也可以將它們聯結再反覆查看。您可以使用 Select 子句隱含聯結集合,也可以使用 Join 或 Group Join 子句明確聯結集合。或者,還可以在單一 From 子句中將每個相關的範圍變數和集合以逗號隔開,藉以指定多個範圍變數和集合。下列程式碼範例顯示 From 子句的這兩種語法選項。

' Multiple From clauses in a query.
Dim result = From var1 In collection1, var2 In collection2

' Equivalent syntax with a single From clause.
Dim result2 = From var1 In collection1 _
              From var2 In collection2

From 子句會定義查詢的範圍,類似於 For 迴圈 (Loop) 的範圍。因此,查詢的範圍中每個 element 範圍變數都必須具有唯一的名稱。因為查詢中可以指定多個 From 子句,所以後續 From 子句可以參考該 From 子句中的範圍變數,也可以參考上一個 From 子句中的範圍變數。例如,下列範例顯示一個巢狀 From 子句,其中第二個子句中的集合是根據第一個子句中的範圍變數屬性。

Dim allOrders = From cust In GetCustomerList() _
                From ord In cust.Orders _
                Select ord

每個 From 子句後面都可以接其他查詢子句的任意組合,以進一步限定查詢。您可以利用下列方式限定查詢:

  • 使用 From 和 Select 子句可以隱含合併多個集合,使用 Join 或 Group Join 子句則可明確合併多個集合。

  • 使用 Where 子句可以篩選查詢結果。

  • 使用 Order By 子句可將結果排序。

  • 使用 Group By 子句可將類似的結果放在一起形成群組。

  • 使用 Aggregate 子句可以識別要針對整個查詢結果進行評估的彙總函式 (Aggregate Function)。

  • 使用 Let 子句可引進反覆運算變數,這個變數的值是由運算式而不是集合所決定。

  • 使用 Distinct 子句可忽略重複的查詢結果。

  • 使用 Skip、Take、Skip While 和 Take While 子句可以識別要傳回的結果部分。

範例

下列查詢運算式使用 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

請參閱

概念

Visual Basic 中的 LINQ 簡介

參考

For Each...Next 陳述式 (Visual Basic)

For...Next 陳述式 (Visual Basic)

Select 子句 (Visual Basic)

Where 子句 (Visual Basic)

Aggregate 子句 (Visual Basic)

Distinct 子句 (Visual Basic)

Join 子句 (Visual Basic)

Group Join 子句 (Visual Basic)

Order By 子句 (Visual Basic)

Let 子句 (Visual Basic)

Skip 子句 (Visual Basic)

Take 子句 (Visual Basic)

Skip While 子句 (Visual Basic)

Take While 子句 (Visual Basic)

其他資源

查詢 (Visual Basic)