2 つのコレクションを 1 つの階層コレクションに結合します。 結合操作は、一致するキーに基づいています。
構文
Group Join element [As type] In collection _
On key1 Equals key2 [ And key3 Equals key4 [... ] ] _
Into expressionList
部品
| 任期 | 定義 |
|---|---|
element |
必須。 結合するコレクションのコントロール変数。 |
type |
任意。
element の型。
typeが指定されていない場合、elementの型はcollectionから推論されます。 |
collection |
必須。
Group Join演算子の左側にあるコレクションと結合するコレクション。
Group Join句は、Join句または別のGroup Join句で入れ子にすることができます。 |
key1
Equals
key2
|
必須。 結合するコレクションのキーを識別します。 結合するコレクションのキーを比較するには、 Equals 演算子を使用する必要があります。
And演算子を使用して複数のキーを識別することで、結合条件を組み合わせることができます。
key1 パラメーターは、Join演算子の左側にあるコレクションから取得する必要があります。
key2 パラメーターは、Join演算子の右側にあるコレクションから取得する必要があります。結合条件で使用されるキーには、コレクションから複数の項目を含む式を指定できます。 ただし、各キー式には、それぞれのコレクションの項目のみを含めることができます。 |
expressionList |
必須。 コレクションの要素グループの集計方法を識別する 1 つ以上の式。 グループ化された結果のメンバー名を識別するには、 Group キーワード (<alias> = Group) を使用します。 グループに適用する集計関数を含めることもできます。 |
注釈
Group Join句は、結合されるコレクションの一致するキー値に基づいて 2 つのコレクションを結合します。 結果のコレクションには、最初のコレクションのキー値に一致する 2 番目のコレクションの要素のコレクションを参照するメンバーを含めることができます。 2 番目のコレクションからグループ化された要素に適用する集計関数を指定することもできます。 集計関数の詳細については、「 集計句」を参照してください。
たとえば、マネージャーのコレクションや従業員のコレクションを考えてみましょう。 両方のコレクションの要素には、特定のマネージャーに報告する従業員を識別する ManagerID プロパティがあります。 結合操作の結果には、一致する ManagerID 値を持つ各マネージャーと従業員の結果が含まれます。
Group Join操作の結果には、マネージャーの完全な一覧が含まれます。 各マネージャーの結果には、特定のマネージャーに一致する従業員の一覧を参照するメンバーが含まれます。
Group Join操作の結果のコレクションには、From句で識別されるコレクションの値と、Group Join 句のInto句で識別される式の任意の組み合わせを含めることができます。
Into句の有効な式の詳細については、「集計句」を参照してください。
Group Join操作は、Group Join演算子の左側で識別されたコレクションからすべての結果を返します。 これは、結合されるコレクションに一致がない場合でも当てはまります。 これは SQL の LEFT OUTER JOIN のようなものです。
Join句を使用して、コレクションを 1 つのコレクションに結合できます。 これは、SQL の INNER JOIN と同じです。
例
次のコード例では、 Group Join 句を使用して 2 つのコレクションを結合します。
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)
Next
Next
こちらも参照ください
- Visual Basic での LINQ の概要
- クエリ
- Select 句
- From 句
- join 句
- Where 句
- GROUP BY 句
.NET