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 子句隱含聯結集合,或是使用 JoinGroup 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 子句,其中第二個子句中的集合是以第一個子句中範圍變數的屬性為基礎。

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

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

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

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

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

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

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

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

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

  • 使用 SkipTakeSkip WhileTake While 子句識別要傳回之結果的元件。

範例

下列查詢運算式會使用 From 子句來宣告 customers 集合中每個 Customer 物件的範圍變數 custWhere 子句會使用範圍變數,將輸出限制為來自指定區域的客戶。 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

另請參閱