From 句 (Visual Basic)From Clause (Visual Basic)

1つ以上の範囲変数と、クエリを実行するコレクションを指定します。Specifies one or more range variables and a collection to query.


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


用語Term DefinitionDefinition
element 必須。Required. コレクションの要素を反復処理するために使用する範囲変数A range variable used to iterate through the elements of the collection. 範囲変数は、クエリが collectionを反復処理するときに、collection の各メンバーを参照するために使用されます。A range variable is used to refer to each member of the collection as the query iterates through the collection. 列挙可能な型である必要があります。Must be an enumerable type.
type 省略可。Optional. element の型。The type of element. type が指定されていない場合、element の種類は collectionから推論されます。If no type is specified, the type of element is inferred from collection.
collection 必須。Required. クエリ対象のコレクションを参照します。Refers to the collection to be queried. 列挙可能な型である必要があります。Must be an enumerable type.


From 句は、クエリのソースデータと、ソースコレクションの要素を参照するために使用される変数を識別するために使用されます。The From clause is used to identify the source data for a query and the variables that are used to refer to an element from the source collection. これらの変数は範囲変数と呼ばれます。These variables are called range variables. Aggregate 句を使用して集計結果のみを返すクエリを識別する場合を除き、クエリには From 句が必要です。The From clause is required for a query, except when the Aggregate clause is used to identify a query that returns only aggregated results. 詳細については、「Aggregate 句」を参照してください。For more information, see Aggregate Clause.

クエリで複数の From 句を指定すると、結合する複数のコレクションを識別できます。You can specify multiple From clauses in a query to identify multiple collections to be joined. 複数のコレクションが指定されている場合は、個別に反復処理されるか、または関連付けられている場合は結合できます。When multiple collections are specified, they are iterated over independently, or you can join them if they are related. Select 句を使用して暗黙的にコレクションを結合することも、Join または Group Join 句を使用して明示的に結合することもできます。You can join collections implicitly by using the Select clause, or explicitly by using the Join or Group Join clauses. 別の方法として、1つの From 句で複数の範囲変数とコレクションを指定し、関連する範囲変数とコレクションをコンマで区切って指定することもできます。As an alternative, you can specify multiple range variables and collections in a single From clause, with each related range variable and collection separated from the others by a comma. 次のコード例は、From 句の両方の構文オプションを示しています。The following code example shows both syntax options for the From clause.

' 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 ループのスコープに似ています。The From clause defines the scope of a query, which is similar to the scope of a For loop. したがって、クエリのスコープ内の各 element 範囲変数には、一意の名前を付ける必要があります。Therefore, each element range variable in the scope of a query must have a unique name. クエリに対して複数の From 句を指定できるので、後続の From 句は From 句の範囲変数を参照できます。また、前の From 句の範囲変数を参照することもできます。Because you can specify multiple From clauses for a query, subsequent From clauses can refer to range variables in the From clause, or they can refer to range variables in a previous From clause. たとえば、次の例は入れ子になった From 句を示しています。2番目の句のコレクションは、最初の句の範囲変数のプロパティに基づいています。For example, the following example shows a nested From clause where the collection in the second clause is based on a property of the range variable in the first clause.

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

From 句の後に、追加のクエリ句の任意の組み合わせを使用して、クエリを絞り込むことができます。Each From clause can be followed by any combination of additional query clauses to refine the query. クエリは、次の方法で絞り込むことができます。You can refine the query in the following ways:

  • FromSelect の句を使用して、または明示的に Join または Group Join 句を使用して、複数のコレクションを暗黙的に結合します。Combine multiple collections implicitly by using the From and Select clauses, or explicitly by using the Join or Group Join clauses.

  • クエリ結果をフィルター処理するには、Where 句を使用します。Use the Where clause to filter the query result.

  • Order By 句を使用して結果を並べ替えます。Sort the result by using the Order By clause.

  • Group By 句を使用して、類似した結果をまとめてグループ化します。Group similar results together by using the Group By clause.

  • Aggregate 句を使用して、クエリ結果全体に対して評価する集計関数を識別します。Use the Aggregate clause to identify aggregate functions to evaluate for the whole query result.

  • Let 句を使用して、コレクションではなく式によって値が決定される反復変数を導入します。Use the Let clause to introduce an iteration variable whose value is determined by an expression instead of a collection.

  • Distinct 句を使用して、重複するクエリ結果を無視します。Use the Distinct clause to ignore duplicate query results.

  • SkipTakeSkip While、および Take While 句を使用して返される結果の部分を識別します。Identify parts of the result to return by using the Skip, Take, Skip While, and Take While clauses.


次のクエリ式では、From 句を使用して、customers コレクション内の各 Customer オブジェクトに対して cust 範囲変数を宣言します。The following query expression uses a From clause to declare a range variable cust for each Customer object in the customers collection. Where 句では、範囲変数を使用して、指定された地域の顧客に出力を制限します。The Where clause uses the range variable to restrict the output to customers from the specified region. For Each ループでは、クエリ結果に各顧客の会社名が表示されます。The For Each loop displays the company name for each customer in the query result.

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
End Sub

参照See also