Partager via


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

Définition

Groupe les résultats de la requête en fonction des 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 grouper les résultats.

projection
String

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

parameters
ObjectParameter[]

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

Retours

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

Exceptions

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

- ou -

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

Exemples

Cet exemple crée un nouvel objet ObjectQuery<T> qui contient les résultats de la requête existante groupés 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és et triés 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 l'objet ObjectQuery<T> retourné par la méthode GroupBy est toujours de type DbDataRecord. Pour plus d’informations, consultez Requêtes d’objet.

S’applique à

Voir aussi