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

См. также раздел