Group By 子句 (Visual Basic)

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

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

部件

术语

定义

listField1, listField2

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

keyExp1

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

keyExp2

可选。 一个或多个附加键,与 keyExp1 组合在一起,创建一个组合键。

aggregateList

必选。 一个或多个表达式,标识如何对组进行聚合。 若要为分组结果标识一个成员名称,请使用 Group 关键字,该关键字可以为以下形式之一:

Into Group

- 或 -

Into <alias> = Group

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

备注

使用 Group By 子句可以对查询结果进行分组。 分组基于一个键或由多个键组成的一个组合键。 与匹配键值相关联的元素包括在同一个组中。

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

示例

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

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

请参见

参考

Select 子句 (Visual Basic)

From 子句 (Visual Basic)

Order By 子句 (Visual Basic)

Aggregate 子句 (Visual Basic)

Group Join 子句 (Visual Basic)

概念

Visual Basic 中的 LINQ 简介

其他资源

查询 (Visual Basic)