Предложение Group By (Visual Basic)Group By Clause (Visual Basic)

Группирует элементы результата запроса.Groups the elements of a query result. Может также использоваться для применения агрегатных функций к каждой группе.Can also be used to apply aggregate functions to each group. Операция группирования основана на одном или нескольких ключах.The grouping operation is based on one or more keys.

СинтаксисSyntax

Group [ listField1 [, listField2 [...] ] By keyExp1 [, keyExp2 [...] ]  
  Into aggregateList  

КомпонентыParts

  • listField1, listField2listField1, listField2

    Необязательный элемент.Optional. Одно или несколько полей переменной или переменных запроса, которые явно определяют поля для включения в сгруппированный результат.One or more fields of the query variable or variables that explicitly identify the fields to be included in the grouped result. Если поля не указаны, в сгруппированный результат включаются все поля из переменной или переменных запроса.If no fields are specified, all fields of the query variable or variables are included in the grouped result.

  • keyExp1

    Обязательный.Required. Выражение, которое определяет ключ, используемый для определения групп элементов.An expression that identifies the key to use to determine the groups of elements. Вы можете указать несколько ключей, чтобы задать составной ключ.You can specify more than one key to specify a composite key.

  • keyExp2

    Необязательный элемент.Optional. Один или несколько дополнительных ключей, которые объединяются с keyExp1 для создания составного ключа.One or more additional keys that are combined with keyExp1 to create a composite key.

  • aggregateList

    Обязательный.Required. Одно или несколько выражений, определяющих способ агрегирования групп.One or more expressions that identify how the groups are aggregated. Чтобы определить имя элемента для результатов группирования, используйте ключевое слово Group , которое может быть в одной из следующих форм:To identify a member name for the grouped results, use the Group keyword, which can be in either of the following forms:

    Into Group  
    

    -или--or-

    Into <alias> = Group  
    

    Вы также можете включать агрегатные функции для применения к группе.You can also include aggregate functions to apply to the group.

КомментарииRemarks

Чтобы разбить результат ы запроса на группы, можно использовать предложение Group By .You can use the Group By clause to break the results of a query into groups. Группирование основывается на ключе или составном ключе, состоящем из нескольких ключей.The grouping is based on a key or a composite key consisting of multiple keys. Элементы, связанные с соответствующими значениями ключа, включаются в одну и ту же группу.Elements that are associated with matching key values are included in the same group.

Чтобы определить имя элемента, используемое для ссылки на группу, применяется параметр aggregateList предложения Into и ключевое слово Group .You use the aggregateList parameter of the Into clause and the Group keyword to identify the member name that is used to reference the group. Вы также можете включать в предложение Into агрегатные функции, чтобы вычислять значения для сгруппированных элементов.You can also include aggregate functions in the Into clause to compute values for the grouped elements. Список стандартных агрегатных функций см. в разделе Aggregate Clause.For a list of standard aggregate functions, see Aggregate Clause.

ПримерExample

Следующий пример кода группирует список клиентов по их расположению (стране или региону) и предоставляет количество клиентов в каждой группе.The following code example groups a list of customers based on their location (country/region) and provides a count of the customers in each group. Результаты упорядочиваются по названию страны или региона.The results are ordered by country/region name. Результаты группирования упорядочиваются по названию города.The grouped results are ordered by city name.

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

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