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

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

構文Syntax

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

指定項目Parts

項目Term 定義Definition
element 必須。Required. コレクションの要素を反復処理するために使用する範囲変数A range variable used to iterate through the elements of the collection. 範囲変数は、クエリが collection を反復処理するときに、@no__t の各メンバーを参照するために使用されます。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. @No__t-0 が指定されていない場合、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.

コメントRemarks

@No__t-0 句は、クエリのソースデータと、ソースコレクションの要素を参照するために使用される変数を識別するために使用されます。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. クエリには From 句が必要です。ただし、集計結果のみを返すクエリを識別するために Aggregate 句を使用する場合を除きます。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. @No__t-0 句を使用して暗黙的にコレクションを結合することも、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

@No__t-0 句は、クエリのスコープを定義します。これは、For ループのスコープに似ています。The From clause defines the scope of a query, which is similar to the scope of a For loop. そのため、クエリのスコープ内の各 @no__t 0 範囲変数には、一意の名前を付ける必要があります。Therefore, each element range variable in the scope of a query must have a unique name. 1つのクエリに対して複数の 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:

  • @No__t-0 および Select 句を使用して、または明示的に 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.

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

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

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

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

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

  • @No__t-0、`Take`、`Skip While、およびTake Whileの各句を使用して返される結果の部分を識別します。</span><span class="sxs-lookup"><span data-stu-id="6e240-141">Identify parts of the result to return by using theSkip,Take,Skip While, andTake While` clauses.

Example

次のクエリ式では、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. @No__t-0 句は範囲変数を使用して、指定された地域の顧客に出力を制限します。The Where clause uses the range variable to restrict the output to customers from the specified region. @No__t-0 ループでは、クエリ結果に各顧客の会社名が表示されます。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
    Console.WriteLine(cust.CompanyName)
  Next
End Sub

関連項目See also