Group By 子句 (Visual Basic)
对查询结果的元素进行分组。 还可以用于将聚合函数应用于每个组。 分组操作基于一个或多个键。
Group [ listField1 [, listField2 [...] ] By keyExp1 [, keyExp2 [...] ]
Into aggregateList
部件
术语 |
定义 |
listField1, listField2 |
可选。 查询变量的一个或多个字段,这些查询变量显式标识要包括在分组结果中的字段。 如果未指定任何字段,则查询变量的所有字段都包括在分组结果中。 |
keyExp1 |
必选。 一个表达式,标识用于确定元素的分组的键。 可以指定多个键来指定一个组合键。 |
keyExp2 |
可选。 一个或多个附加键,与 keyExp1 组合在一起,创建一个组合键。 |
aggregateList |
必选。 一个或多个表达式,标识如何对组进行聚合。 若要为分组结果标识一个成员名称,请使用 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