ObjectQuery<T>.GroupBy(String, String, ObjectParameter[]) Метод

Определение

Группит результаты запроса по указанным критериям.

public:
 System::Data::Objects::ObjectQuery<System::Data::Common::DbDataRecord ^> ^ GroupBy(System::String ^ keys, System::String ^ projection, ... cli::array <System::Data::Objects::ObjectParameter ^> ^ parameters);
public System.Data.Objects.ObjectQuery<System.Data.Common.DbDataRecord> GroupBy(string keys, string projection, params System.Data.Objects.ObjectParameter[] parameters);
member this.GroupBy : string * string * System.Data.Objects.ObjectParameter[] -> System.Data.Objects.ObjectQuery<System.Data.Common.DbDataRecord>
Public Function GroupBy (keys As String, projection As String, ParamArray parameters As ObjectParameter()) As ObjectQuery(Of DbDataRecord)

Параметры

keys
String

Ключевые столбцы, по которым следует сгруппировать результаты.

projection
String

Список выбранных свойств, определяющих проекцию.

parameters
ObjectParameter[]

Ноль или больше параметров, используемых в этом методе.

Возвращаемое значение

Новый ObjectQuery<T> экземпляр типа DbDataRecord , эквивалентный исходному экземпляру с применением GROUP BY .

Исключения

Параметр keys имеет null или пустую строку.

–или–

Параметр projection имеет null или пустую строку.

Примеры

В этом примере создается новый ObjectQuery<T> объект, содержащий результаты существующего запроса, сгруппированного по имени продукта.

    using (AdventureWorksEntities context =
        new AdventureWorksEntities())
    {
        string queryString = @"SELECT VALUE product
            FROM AdventureWorksEntities.Products AS product";

        ObjectQuery<Product> productQuery =
            new ObjectQuery<Product>(queryString,
                context, MergeOption.NoTracking);

        ObjectQuery<DbDataRecord> productQuery2 =
            productQuery.GroupBy("it.name AS pn",
            "Sqlserver.COUNT(it.Name) as count, pn");

        // Iterate through the collection of Products
        // after the GroupBy method was called.
        foreach (DbDataRecord result in productQuery2)
        {
            Console.WriteLine("Name: {0}; Count: {1}",
                result["pn"], result["count"]);
        }
    }
}

В этом примере возвращается набор вложенных записей данных, содержащих Contact.LastName столбец, сгруппированный и отсортированный по алфавиту по первой букве Contact.LastName.

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    // Define the query with a GROUP BY clause that returns
    // a set of nested LastName records grouped by first letter.
    ObjectQuery<DbDataRecord> query =
        context.Contacts
        .GroupBy("SUBSTRING(it.LastName, 1, 1) AS ln", "ln")
        .Select("it.ln AS ln, (SELECT c1.LastName " +
        "FROM AdventureWorksEntities.Contacts AS c1 " +
        "WHERE SubString(c1.LastName, 1, 1) = it.ln) AS CONTACT")
        .OrderBy("it.ln");

    // Execute the query and walk through the nested records.
    foreach (DbDataRecord rec in
        query.Execute(MergeOption.AppendOnly))
    {
        Console.WriteLine("Last names that start with the letter '{0}':",
                    rec[0]);
        List<DbDataRecord> list = rec[1] as List<DbDataRecord>;
        foreach (DbDataRecord r in list)
        {
            for (int i = 0; i < r.FieldCount; i++)
            {
                Console.WriteLine("   {0} ", r[i]);
            }
        }
    }
}

Комментарии

GroupBy применяет проекцию, указанную параметром projection . Это означает, что возвращаемый ObjectQuery<T> методом GroupBy всегда имеет тип DbDataRecord. Дополнительные сведения см. в разделе "Запросы объектов".

Применяется к

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