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.

projection
String

Die Liste ausgewählter Eigenschaften, mit denen die Projektion definiert wird.

parameters
ObjectParameter[]

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

Gibt zurück

Eine neue ObjectQuery<T>-Instanz des Typs DbDataRecord, die der ursprünglichen Instanz entspricht, für die jedoch GROUP BY festgelegt ist.

Ausnahmen

Der query-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 bestehenden 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 ein Satz geschachtelter Datensätze zurückgegeben, die die Contact.LastName Spalte enthalten, gruppiert und alphabetisch sortiert nach dem ersten Buchstaben von 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]);
            }
        }
    }
}

Hinweise

GroupBy wendet die durch den projection Parameter angegebene Projektion an. Dies bedeutet, dass die von der ObjectQuery<T>-Methode zurückgegebene GroupBy stets den Typ DbDataRecord aufweist. Weitere Informationen finden Sie unter Objektabfragen.

Gilt für:

Weitere Informationen