Поделиться через


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

Другие ресурсы

Запросы (Visual Basic)