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

Definice

Seskupí výsledky dotazu podle zadaných kritérií.

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)

Parametry

keys
String

Klíčové sloupce, podle kterých se mají výsledky seskupit.

projection
String

Seznam vybraných vlastností, které definují projekci.

parameters
ObjectParameter[]

Nula nebo více parametrů, které se používají v této metodě.

Návraty

Nová ObjectQuery<T> instance typu DbDataRecord , která je ekvivalentní původní instanci s použitým typem GROUP BY .

Výjimky

Parametr keys je null nebo prázdný řetězec.

nebo

Parametr projection je null nebo prázdný řetězec.

Příklady

Tento příklad vytvoří nový ObjectQuery<T> objekt, který obsahuje výsledky existujícího dotazu seskupené podle názvu produktu.

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

Tento příklad vrátí sadu vnořených datových záznamů, které obsahují Contact.LastName sloupec, seskupené a seřazené abecedně podle prvního písmena 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]);
            }
        }
    }
}

Poznámky

GroupBy použije projekci určenou parametrem projection . To znamená, že vrácená ObjectQuery<T> metodou GroupBy je vždy typu DbDataRecord. Další informace naleznete v tématu Dotazy na objekty.

Platí pro

Viz také