Предложение 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