From 句 (Visual Basic)

クエリを実行する 1 つ以上の範囲変数とコレクションを指定します。

構文

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

指定項目

用語 定義
element 必須です。 コレクションの要素の反復処理に使用される範囲変数。 範囲変数は、クエリによって collection を反復処理するときに、collection の各メンバーを参照するために使用されます。 列挙可能な型である必要があります。
type 任意。 element の型。 type が指定されていない場合、element の型は collection から推論されます。
collection 必須です。 クエリ対象のコレクションを参照します。 列挙可能な型である必要があります。

Remarks

From 句は、クエリのソース データと、ソース コレクションの要素を参照するために使用される変数を識別するために使用します。 このような変数は範囲変数と呼ばれます。 Aggregate 句を使用して、集計結果のみを返すクエリを識別する場合を除き、クエリには From 句が必要です。 詳細については、「Aggregate 句」を参照してください。

クエリで複数の From 句を指定して、結合する複数のコレクションを識別できます。 複数のコレクションを指定している場合、それらは個別に反復処理するか、またはそれらが関連付けられている場合は結合できます。 コレクションは、Select 句を使用して暗黙的に結合することも、Join または Group Join 句を使用して明示的に結合することもできます。 または、1 つの 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 句を示しています。2 つ目の句のコレクションは、最初の句の範囲変数のプロパティに基づいています。

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 句を使用して、クエリ結果全体を評価する集計関数を特定します。

  • Let 句を使用して、コレクションではなく式によって値が決定される反復変数を導入します。

  • Distinct 句を使用して、重複するクエリ結果を無視します。

  • SkipTakeSkip 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

関連項目