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
句を使用して、重複するクエリ結果を無視します。Skip
、Take
、Skip 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
関連項目
.NET