Partager via


ObjectQuery<T>.GroupBy(String, String, ObjectParameter[]) Méthode

Définition

Regroupe les résultats de la requête selon les critères spécifiés.

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)

Paramètres

keys
String

Colonnes clés par lesquelles regrouper les résultats.

projection
String

Liste des propriétés sélectionnées qui définissent la projection.

parameters
ObjectParameter[]

Zéro ou plusieurs paramètres utilisés dans cette méthode.

Retours

Nouvelle ObjectQuery<T> instance de type DbDataRecord équivalente à l’instance d’origine avec GROUP BY appliquée.

Exceptions

Le keys paramètre est null ou une chaîne vide.

- ou -

Le projection paramètre est null ou une chaîne vide.

Exemples

Cet exemple crée un ObjectQuery<T> objet qui contient les résultats de la requête existante regroupée par nom de produit.

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

Cet exemple retourne un ensemble d’enregistrements de données imbriqués qui contiennent la Contact.LastName colonne, regroupées et triées par ordre alphabétique par la première lettre de 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]);
            }
        }
    }
}

Remarques

GroupBy applique la projection spécifiée par le projection paramètre. Cela signifie que le ObjectQuery<T> retourné par la GroupBy méthode est toujours de type DbDataRecord. Pour plus d’informations, consultez Requêtes d’objet.

S’applique à

Voir aussi