将两个集合合并到单个分层集合中。 联接作基于匹配键。
语法
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
集合的所有结果。 即使集合中没有要联接的匹配项,也是如此。 这类似于 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