將兩個集合合併成單一階層式集合。 聯結作業是以比對索引鍵為基礎。
語法
Group Join element [As type] In collection _
On key1 Equals key2 [ And key3 Equals key4 [... ] ] _
Into expressionList
組件
| 術語 | 定義 |
|---|---|
element |
必須的。 要聯結之集合的控件變數。 |
type |
選擇性。
element 的類型。
type如果未指定 ,則會從 collection推斷 的element型別。 |
collection |
必須的。 要與運算子左邊之集合結合的 Group Join 集合。
Group Join子句可以巢狀於 Join 子句或另一個 Group Join 子句中。 |
key1
Equals
key2
|
必須的。 識別所聯結之集合的索引鍵。 您必須使用 Equals 運算符來比較所聯結集合中的索引鍵。 您可以使用 運算符來識別多個索引鍵,來 And 結合聯結條件。 參數 key1 必須來自運算子左邊的 Join 集合。 參數 key2 必須來自運算子右側的 Join 集合。聯結條件中使用的索引鍵可以是包含集合中多個項目的表達式。 不過,每個索引鍵表示式只能包含其個別集合中的專案。 |
expressionList |
必須的。 一或多個表達式,識別如何匯總集合中的專案群組。 若要識別群組結果的成員名稱,請使用 Group 關鍵詞 (<alias> = Group)。 您也可以包含要套用至群組的聚合函數。 |
備註
子 Group Join 句會根據所聯結集合中的索引鍵值,結合兩個集合。 產生的集合可以包含成員,該成員會參考第二個集合中符合第一個集合之索引鍵值的專案集合。 您也可以指定要套用至第二個集合中群組專案的聚合函數。 如需聚合函數的相關信息,請參閱 Aggregate 子句。
例如,請考慮經理集合和員工集合。 這兩個集合中的元素都有一個 ManagerID 屬性,可識別向特定經理回報的員工。 聯結作業的結果會包含每個具有相符 ManagerID 值之經理和員工的結果。 作業的結果 Group Join 會包含完整的管理員清單。 每個經理結果都會有一個成員,參考符合特定經理的員工清單。
作業所產生的 Group Join 集合可以包含 子句中所 From 識別集合的任何值組合,以及 子句 子句子 Into 句中所識別的 Group Join 表達式。 如需 子句有效表達式 Into 的詳細資訊,請參閱 Aggregate 子句。
作業 Group Join 會傳回運算子左邊 Group Join 所識別集合的所有結果。 即使集合中沒有相符專案,也是如此。 這就像在 SQL 中。LEFT OUTER JOIN
您可以使用 Join 子句將集合合併成單一集合。 這相當於 INNER JOIN SQL 中的 。
範例
下列程式代碼範例會使用 Group Join 子句聯結兩個集合。
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