Group Join 子句 (Visual Basic)

将两个集合合并到单个分层集合中。 联接作基于匹配键。

语法

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

部件

术语 定义
element 必填。 要联接的集合的控件变量。
type 可选。 element 的类型。 如果未type指定,则从中推断出collectionelement类型。
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

另请参阅