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,则从 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 子句中标识的集合中的值与 Group Join 子句的 Into 子句中标识的表达式的任何组合。 若要详细了解 Into 子句的有效表达式,请参阅 Aggregate 子句

Group Join 运算将返回在 Group Join 运算符左侧标识的集合中的所有结果。 即使要联结的集合中没有任何匹配项,也是如此。 这与 SQL 中的 LEFT OUTER JOIN 类似。

可使用 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

另请参阅