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.
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.