ObjectQuery<T>.GroupBy(String, String, ObjectParameter[]) Metod

Definition

Grupperar frågeresultatet efter det angivna villkoret.

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)

Parametrar

keys
String

De nyckelkolumner som resultatet ska grupperas efter.

projection
String

Listan över valda egenskaper som definierar projektionen.

parameters
ObjectParameter[]

Noll eller fler parametrar som används i den här metoden.

Returer

En ny ObjectQuery<T> instans av typen DbDataRecord som motsvarar den ursprungliga instansen med GROUP BY tillämpad.

Undantag

Parametern keys är null eller en tom sträng.

-eller-

Parametern projection är null eller en tom sträng.

Exempel

Det här exemplet skapar ett nytt ObjectQuery<T> objekt som innehåller resultatet av den befintliga frågan grupperad efter produktnamn.

    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"]);
        }
    }
}

Det här exemplet returnerar en uppsättning kapslade dataposter som innehåller Contact.LastName kolumnen, grupperade och sorterade alfabetiskt efter den första bokstaven i 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]);
            }
        }
    }
}

Kommentarer

GroupBy tillämpar den projektion som anges av parametern projection . Det innebär att den ObjectQuery<T> som returneras av GroupBy metoden alltid är av typen DbDataRecord. Mer information finns i Objektfrågor.

Gäller för

Se även