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

Definitie

Hiermee worden de queryresultaten gegroepeerd op basis van de opgegeven criteria.

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)

Parameters

keys
String

De belangrijkste kolommen waarop de resultaten moeten worden gegroepeerd.

projection
String

De lijst met geselecteerde eigenschappen waarmee de projectie wordt gedefinieerd.

parameters
ObjectParameter[]

Nul of meer parameters die in deze methode worden gebruikt.

Retouren

Een nieuw ObjectQuery<T> exemplaar van het type DbDataRecord dat gelijk is aan het oorspronkelijke exemplaar waarop GROUP BY is toegepast.

Uitzonderingen

De keys parameter is null of een lege tekenreeks.

– of –

De projection parameter is null of een lege tekenreeks.

Voorbeelden

In dit voorbeeld wordt een nieuw ObjectQuery<T> object gemaakt dat de resultaten bevat van de bestaande query gegroepeerd op productnaam.

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

In dit voorbeeld wordt een set geneste gegevensrecords geretourneerd die de Contact.LastName kolom bevatten, gegroepeerd en alfabetisch gesorteerd op de eerste letter van 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]);
            }
        }
    }
}

Opmerkingen

GroupBy past de projectie toe die is opgegeven door de projection parameter. Dit betekent dat de ObjectQuery<T> geretourneerde door de GroupBy methode altijd van het type DbDataRecordis. Zie Objectquery's voor meer informatie.

Van toepassing op

Zie ook