ObjectQuery<T>.GroupBy(String, String, ObjectParameter[]) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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.