共用方式為


From 子句 (Visual Basic)

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

語法

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

組件

術語 定義
element 必須的。 用來逐一查看集合元素 的範圍變數 。 範圍變數用來參考 的每個成員 collection ,因為查詢會逐 collection一查看 。 必須是可列舉的類型。
type 選擇性。 element 的類型。 type如果未指定 ,則會從 collection推斷 的element型別。
collection 必須的。 參考要查詢的集合。 必須是可列舉的類型。

備註

From子句可用來識別查詢的源數據,以及用來參考來源集合中元素的變數。 這些變數稱為 範圍變數。 查詢 From 需要 子句,但當 子句用來識別只傳回匯總結果的查詢時 Aggregate 除外。 如需詳細資訊,請參閱 Aggregate 子句

您可以在查詢中指定多個 From 子句,以識別要聯結的多個集合。 指定多個集合時,它們會獨立逐一查看,或者,如果它們相關,您可以聯結它們。 您可以使用 子句隱含Select聯結集合,或使用 或 Group Join 子句明確聯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 。 因此, element 查詢範圍中的每個範圍變數都必須有唯一的名稱。 因為您可以為查詢指定多個 From 子句,所以後續 From 子句可以參考 子句中的 From 範圍變數,也可以參考前 From 一個子句中的範圍變數。 例如,下列範例顯示巢狀 From 子句,其中第二個子句中的集合是以第一個子句中 range 變數的 屬性為基礎。

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

每個 From 子句都可以接著其他查詢子句的任何組合來精簡查詢。 您可以透過下列方式精簡查詢:

  • 使用 FromSelect 子句隱含結合多個集合,或使用 或 Group Join 子句明確Join結合。

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

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

  • 使用 Group By 子句將類似的結果分組在一起。

  • Aggregate使用 子句來識別匯總函數,以評估整個查詢結果。

  • Let使用 子句來引進反覆運算變數,其值是由表達式決定,而不是集合。

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

  • 使用SkipTakeSkip WhileTake 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

另請參閱