Group Join 句 (Visual Basic)Group Join Clause (Visual Basic)

2 つのコレクションを、単一の階層コレクションに結合します。Combines two collections into a single hierarchical collection. 結合操作は、一致するキーに基づいています。The join operation is based on matching keys.


Group Join element [As type] In collection _  
  On key1 Equals key2 [ And key3 Equals key4 [... ] ] _  
  Into expressionList  


項目Term 定義Definition
element 必須。Required. 結合されているコレクションのコントロール変数。The control variable for the collection being joined.
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. @No__t-0 演算子の左辺にあるコレクションと結合するコレクションです。The collection to combine with the collection that is on the left side of the Group Join operator. @No__t-0 句は、Join 句、または別の Group Join 句で入れ子にすることができます。A Group Join clause can be nested in a Join clause or in another Group Join clause.
key1 Equals key2key1 Equals key2 必須。Required. 結合されているコレクションのキーを識別します。Identifies keys for the collections being joined. @No__t-0 演算子を使用して、結合されているコレクションのキーを比較する必要があります。You must use the Equals operator to compare keys from the collections being joined. 複数のキーを識別するには、And 演算子を使用して結合条件を結合します。You can combine join conditions by using the And operator to identify multiple keys. @No__t-0 パラメーターは、Join 演算子の左側のコレクションのものである必要があります。The key1 parameter must be from the collection on the left side of the Join operator. @No__t-0 パラメーターは、Join 演算子の右側にあるコレクションのものである必要があります。The key2 parameter must be from the collection on the right side of the Join operator.

結合条件で使用されるキーは、コレクションの複数の項目を含む式にすることができます。The keys used in the join condition can be expressions that include more than one item from the collection. ただし、各キー式には、それぞれのコレクションの項目だけを含めることができます。However, each key expression can contain only items from its respective collection.
expressionList 必須。Required. コレクションの要素のグループを集計する方法を識別する1つ以上の式。One or more expressions that identify how the groups of elements from the collection are aggregated. グループ化された結果のメンバー名を特定するには、Group キーワード (<alias> = Group) を使用します。To identify a member name for the grouped results, use the Group keyword (<alias> = Group). グループに適用する集計関数を含めることもできます。You can also include aggregate functions to apply to the group.


@No__t-0 句は、結合されているコレクションのキー値の一致に基づいて2つのコレクションを結合します。The Group Join clause combines two collections based on matching key values from the collections being joined. 結果のコレクションには、最初のコレクションのキー値に一致する2番目のコレクションの要素のコレクションを参照するメンバーを含めることができます。The resulting collection can contain a member that references a collection of elements from the second collection that match the key value from the first collection. 2番目のコレクションのグループ化された要素に適用する集計関数を指定することもできます。You can also specify aggregate functions to apply to the grouped elements from the second collection. 集計関数の詳細については、「 Aggregate 句」を参照してください。For information about aggregate functions, see Aggregate Clause.

たとえば、マネージャーのコレクションや従業員のコレクションなどを検討します。Consider, for example, a collection of managers and a collection of employees. 両方のコレクションの要素には、特定のマネージャーに報告する従業員を識別する ManagerID プロパティがあります。Elements from both collections have a ManagerID property that identifies the employees that report to a particular manager. 結合操作の結果には、各マネージャーと、一致する ManagerID 値を持つ従業員の結果が含まれます。The results from a join operation would contain a result for each manager and employee with a matching ManagerID value. @No__t 0 操作の結果には、マネージャーの完全な一覧が含まれます。The results from a Group Join operation would contain the complete list of managers. 各マネージャーの結果には、特定のマネージャーに一致した従業員の一覧を参照するメンバーが含まれます。Each manager result would have a member that referenced the list of employees that were a match for the specific manager.

@No__t 0 操作によって生成されるコレクションには、From 句で識別されたコレクションの値と、Group Join 句の Into 句で識別された式の任意の組み合わせを含めることができます。The collection resulting from a Group Join operation can contain any combination of values from the collection identified in the From clause and the expressions identified in the Into clause of the Group Join clause. @No__t-0 句の有効な式の詳細については、「 Aggregate 句」を参照してください。For more information about valid expressions for the Into clause, see Aggregate Clause.

@No__t 0 の操作は、Group Join 演算子の左側で特定されたコレクションからすべての結果を返します。A Group Join operation will return all results from the collection identified on the left side of the Group Join operator. これは、結合されているコレクションに一致するものがない場合でも同様です。This is true even if there are no matches in the collection being joined. これは、SQL の @no__t 0 に似ています。This is like a LEFT OUTER JOIN in SQL.

@No__t-0 句を使用して、コレクションを1つのコレクションにまとめることができます。You can use the Join clause to combine collections into a single collection. これは、SQL の @no__t 0 に相当します。This is equivalent to an INNER JOIN in SQL.


次のコード例では、Group Join 句を使用して2つのコレクションを結合します。The following code example joins two collections by using the Group Join clause.

Dim customerList = From cust In customers
                   Group Join ord In orders On
                   cust.CustomerID Equals ord.CustomerID
                   Into CustomerOrders = Group,
                        OrderTotal = Sum(ord.Total)
                   Select cust.CompanyName, cust.CustomerID,
                          CustomerOrders, OrderTotal

For Each customer In customerList
  Console.WriteLine(customer.CompanyName &
                    " (" & customer.OrderTotal & ")")

  For Each order In customer.CustomerOrders
    Console.WriteLine(vbTab & order.OrderID & ": " & order.Total)

関連項目See also