クエリを実行する 1 つ以上の範囲変数とコレクションを指定します。
構文
From element [ As type ] In collection [ _ ]
[, element2 [ As type2 ] In collection2 [, ... ] ]
部品
任期 | 定義 |
---|---|
element |
必須。 コレクションの要素を反復処理するために使用される 範囲変数 。 範囲変数は、クエリがcollection を反復処理するcollection の各メンバーを参照するために使用されます。 列挙可能な型である必要があります。 |
type |
任意。
element の型。
type が指定されていない場合、element の型はcollection から推論されます。 |
collection |
必須。 クエリを実行するコレクションを参照します。 列挙可能な型である必要があります。 |
注釈
From
句は、クエリのソース データと、ソース コレクションから要素を参照するために使用される変数を識別するために使用されます。 これらの変数は範囲 変数と呼ばれます。
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