Предложение 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
См. также раздел
- Introduction to LINQ in Visual Basic (Знакомство с LINQ в Visual Basic)
- Запросы
- Предложение Select
- Предложение From
- Упорядочение по предложению
- Aggregate Clause
- Предложение Group Join