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

Definition

Gruppiert die Abfrageergebnisse nach den angegebenen Kriterien.Groups the query results by the specified 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

Die Schlüsselspalten, nach denen die Ergebnisse gruppiert werden.The key columns by which to group the results.

projection
String

Die Liste ausgewählter Eigenschaften, mit denen die Projektion definiert wird.The list of selected properties that defines the projection.

parameters
ObjectParameter[]

Null oder mehr Parameter, die in dieser Methode verwendet werden.Zero or more parameters that are used in this method.

Returns

ObjectQuery<DbDataRecord>

Eine neue ObjectQuery<T>-Instanz des Typs DbDataRecord, die der ursprünglichen Instanz entspricht, für die jedoch GROUP BY festgelegt ist.A new ObjectQuery<T> instance of type DbDataRecord that is equivalent to the original instance with GROUP BY applied.

Exceptions

Der query-Parameter ist null oder eine leere Zeichenfolge.The query parameter is null or an empty string.

- oder --or-

Der projection-Parameter ist null oder eine leere Zeichenfolge.The projection parameter is null or an empty string.

Examples

Dieses Beispiel basiert auf den Microsoft SQL Server Product Samples: Database.This example is based on the Microsoft SQL Server Product Samples: Database.

In diesem Beispiel wird ein neues ObjectQuery<T>-Objekt erstellt, das die Ergebnisse der bestehenden Abfrage nach Produktname gruppiert enthält.This example creates a new ObjectQuery<T> object that contains the results of the existing query grouped by product name.

    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"]);
        }
    }
}
    Using context As New AdventureWorksEntities()
        Dim queryString As String = "SELECT VALUE product " & vbCr & vbLf & " FROM AdventureWorksEntities.Products AS product"

        Dim productQuery As New ObjectQuery(Of Product)(queryString, context, MergeOption.NoTracking)

        Dim productQuery2 As ObjectQuery(Of DbDataRecord) = _
            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. 
        For Each result As DbDataRecord In productQuery2
            Console.WriteLine("Name: {0}; Count: {1}", result("pn"), result("count"))
        Next
    End Using
End Sub

In diesem Beispiel wird ein Satz von gruppierten Datensätzen zurückgegeben, die die Contact.LastName Spalte enthalten, die nach dem ersten Buchstaben Contact.LastNamegruppiert und alphabetisch sortiert werden.This example returns a set of nested data records that contain the Contact.LastName column, grouped and sorted alphabetically by the first letter of 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]);
            }
        }
    }
}
Using context As New AdventureWorksEntities()
    ' Define the query with a GROUP BY clause that returns 
    ' a set of nested LastName records grouped by first letter. 
    Dim query As ObjectQuery(Of DbDataRecord) = _
        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. 
    For Each rec As DbDataRecord In query.Execute(MergeOption.AppendOnly)
        Console.WriteLine("Last names that start with the letter '{0}':", rec(0))
        Dim list As List(Of DbDataRecord) = TryCast(rec(1), List(Of DbDataRecord))
        For Each r As DbDataRecord In list
            For i As Integer = 0 To r.FieldCount - 1
                Console.WriteLine(" {0} ", r(i))
            Next
        Next
    Next
End Using

Remarks

GroupBy wendet die Projektion an, die vom projection-Parameter angegeben wird.GroupBy applies the projection specified by the projection parameter. Dies bedeutet, dass die von der ObjectQuery<T>-Methode zurückgegebene GroupBy stets den Typ DbDataRecord aufweist.This means that the ObjectQuery<T> returned by the GroupBy method is always of type DbDataRecord. Weitere Informationen finden Sie unter Objekt Abfragen.For more information, see Object Queries.

Applies to

See also