Group By 子句 (Visual Basic)

对查询结果的元素进行分组。 还可用于将聚合函数应用于每个组。 分组作基于一个或多个键。

语法

Group [ listField1 [, listField2 [...] ] By keyExp1 [, keyExp2 [...] ]  
  Into aggregateList  

部件

  • listField1listField2

    可选。 查询变量或变量的一个或多个字段,这些字段显式标识要包含在分组结果中的字段。 如果未指定任何字段,则查询变量或变量的所有字段都包含在分组结果中。

  • keyExp1

    必填。 一个表达式,标识用于确定元素组的键。 可以指定多个键来指定组合键。

  • keyExp2

    可选。 与一个或多个组合在一起 keyExp1 以创建复合键的其他键。

  • aggregateList

    必填。 一个或多个标识如何聚合组的表达式。 若要标识分组结果的成员名称,请使用 Group 关键字,该关键字可以采用以下任一形式:

    Into Group  
    

    -或-

    Into <alias> = Group  
    

    还可以包含要应用于组的聚合函数。

注解

可以使用子 Group By 句将查询的结果分解为组。 分组基于由多个键组成的键或复合键。 与匹配键值关联的元素包含在同一组中。

使用 aggregateList 子句的参数 IntoGroup 关键字来标识用于引用组的成员名称。 还可以在子句中包含 Into 聚合函数,以计算分组元素的值。 有关标准聚合函数的列表,请参阅 Aggregate 子句

示例:

下面的代码示例根据客户的位置(国家/地区)对客户列表进行分组,并提供每个组中的客户计数。 结果按国家/地区名称排序。 分组结果按城市名称排序。

Public Sub GroupBySample()
    Dim customers = GetCustomerList()

    Dim customersByCountry = From cust In customers
                             Order By cust.City
                             Group By CountryName = cust.Country
                             Into RegionalCustomers = Group, Count()
                             Order By CountryName

    For Each country In customersByCountry
        Console.WriteLine(country.CountryName &
                          " (" & country.Count & ")" & vbCrLf)

        For Each customer In country.RegionalCustomers
            Console.WriteLine(vbTab & customer.CompanyName &
                              " (" & customer.City & ")")
        Next
    Next
End Sub

另请参阅