Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Mise à jour : novembre 2007
Cette rubrique présente deux façons différentes de créer une requête qui organise les données sources en groupes, puis effectue une sous-requête sur chaque groupe individuellement. La technique de base dans chaque exemple est de grouper les éléments source en utilisant une continuation nommée newGroup, puis de générer ensuite une nouvelle sous-requête sur newGroup. Cette sous-requête est exécutée sur chaque nouveau groupe créé par la requête externe. Notez que dans cet exemple particulier, la sortie définitive n'est pas un groupe mais une séquence en deux dimensions de types anonymes.
Pour plus d'informations sur la manière de grouper, consultez group, clause (Référence C#).
Pour plus d'informations sur les continuations, consultez into (Référence C#). L'exemple suivant utilise une structure de données en mémoire comme source de données, mais les mêmes principes s'appliquent à tout type de source de données LINQ.
Exemple
private static void QueryMax()
{
var queryGroupMax =
from student in students
group student by student.Year into studentGroup
select new
{
Level = studentGroup.Key,
HighestScore =
(from student2 in studentGroup
select student2.ExamScores.Average()).Max()
};
int count = queryGroupMax.Count();
Console.WriteLine("Number of groups = {0}", count);
foreach (var item in queryGroupMax)
{
Console.WriteLine(" {0} Highest Score={1}", item.Level, item.HighestScore);
}
}
Compilation du code
Cet exemple contient des références aux objets définis dans l'exemple d'application dans Comment : interroger une collection d'objets (Guide de programmation C#). Pour compiler et exécuter cette méthode, collez-la dans la classe StudentClass de cette application et ajoutez-lui un appel de la méthode Main.
When you adapt this method to your own application, remember that LINQ requires version 3.5 of the .NET Framework, and the project must contain a reference to System.Core.dll and a using directive for System.Linq. LINQ to SQL, LINQ to XML and LINQ to DataSet types require additional usings and references. Pour plus d'informations, consultez Comment : créer un projet LINQ.