次の方法で共有


From 句 (Visual Basic)

クエリを実行する 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 句を使用します。

  • 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

こちらも参照ください