将两个集合合并到单个分层集合中。 联接作基于匹配键。
语法
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作生成的集合可以包含子句中标识的集合和子句中FromInto标识的Group Join表达式的任何值组合。 有关子 Into 句的有效表达式的详细信息,请参阅 Aggregate 子句。
Group Join作将返回运算符左侧标识的Group Join集合的所有结果。 即使集合中没有要联接的匹配项,也是如此。 这类似于 LEFT OUTER JOIN 在 SQL 中。
可以使用子 Join 句将集合合并到单个集合中。 这相当于 SQL 中的一个 INNER JOIN 。
示例:
下面的代码示例使用子句联接两个 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