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
子句来将查询的结果分解为组。 分组基于某个键或包含多个键的组合键。 与匹配的键值相关联的元素包括在同一组中。
使用 aggregateList
子句的 Into
参数和 Group
关键字来标识用于引用该组的成员名称。 还可以将聚合函数包括在 Into
子句中,以计算分组元素的值。 有关标准聚合函数的列表,请参阅 Aggregate Clause。
示例
下面的代码示例根据客户所在的位置(国家/地区)对客户列表进行分组,并提供了每个组中的客户计数。 按国家/地区名称对结果进行排序。 按城市名称对分组结果进行排序。
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