Предложение Group By (Visual Basic)
Группирует элементы результата запроса.Может также использоваться для применения агрегатных функций для каждой группы.Операция группирования основана на одном или нескольких ключах.
Group [ listField1 [, listField2 [...] ] By keyExp1 [, keyExp2 [...] ]
Into aggregateList
Части
Термин |
Определение |
listField1, listField2 |
Необязательный.Один или несколько полей переменной или переменных запроса, которые явно идентифицируют поля, подлежащие включению в сгруппированный результат.Если поля не указаны, в сгруппированные результаты включаются все поля из переменной или переменных запроса. |
keyExp1 |
Обязательный.Выражение, которое определяет ключ, используемый для определения групп элементов.Можно указать более одного ключа для указания составного ключа. |
keyExp2 |
Необязательный.Один или несколько дополнительных ключей, которые объединяются с keyExp1 для создания составного ключа. |
aggregateList |
Обязательный.Одно или несколько выражений, определяющих способ создания групп.Чтобы определить имя члена для сгруппированных результатов, используйте ключевое слово Group, которое может иметь одну из следующих форм:
-или-
Можно также включить агрегатные функции, применимые к группе. |
Заметки
Можно использовать предложение Group By для разделения результатов запроса на группы.Группирование основано на простом ключе или составном ключе, состоящем из нескольких простых.Элементы, которые связаны с совпадающими значениями ключа, включаются в ту же группу.
Используйте параметр aggregateList условия Into и ключевое слово 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)
Основные понятия
Знакомство с LINQ в Visual Basic