Freigeben über


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

Definition

Gruppiert die Abfrageergebnisse nach den angegebenen Kriterien.

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)

Parameter

keys
String

Die Schlüsselspalten, nach denen die Ergebnisse gruppiert werden sollen.

projection
String

Die Liste der ausgewählten Eigenschaften, die die Projektion definieren.

parameters
ObjectParameter[]

Null oder mehr Parameter, die in dieser Methode verwendet werden.

Gibt zurück

Eine neue ObjectQuery<T> Instanz vom Typ DbDataRecord , die der ursprünglichen Instanz entspricht, auf die GROUP BY angewendet wurde.

Ausnahmen

Der keys Parameter ist null oder eine leere Zeichenfolge.

- oder -

Der projection Parameter ist null oder eine leere Zeichenfolge.

Beispiele

In diesem Beispiel wird ein neues ObjectQuery<T> Objekt erstellt, das die Ergebnisse der vorhandenen Abfrage nach Produktname gruppiert enthält.

    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 diesem Beispiel wird eine Reihe geschachtelter Datensätze zurückgegeben, die die Contact.LastName Spalte enthalten, nach dem ersten Buchstaben Contact.LastNamealphabetisch gruppiert und sortiert sind.

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

Hinweise

GroupBy wendet die vom Parameter angegebene Projektion an projection . Dies bedeutet, dass die ObjectQuery<T> von der GroupBy Methode zurückgegebene Methode immer vom Typ DbDataRecordist. Weitere Informationen finden Sie unter Objektabfragen.

Gilt für:

Weitere Informationen