Postupy: Provádění poddotazů na skupinách (Průvodce programováním v C#)
Toto téma uvádí dvěma různými způsoby vytvoření dotazu, který zdrojová data objednávky do skupin a provádí nad každou skupinu poddotazu jednotlivě.Základní technika každý příklad je seskupení prvků zdroje pomocí pokračování s názvem newGroupa potom generování nových poddotazu proti newGroup.Proti každé nové skupiny vytvořené vnější dotaz je spuštěn tento poddotaz.Všimněte si, že v tomto příkladu zejména konečný výstup není skupina, ale plochý posloupnost anonymních typů.
Další informace o skupině naleznete v group – klauzule (Referenční dokumentace jazyka C#).
Další informace o continuations into (Referenční dokumentace jazyka C#).Následující příklad používá jako zdroj dat struktury dat v paměti, ale stejné zásady platí pro jakýkoli druh LINQ zdroje dat.
Příklad
public 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);
}
}
Probíhá kompilace kódu
V tomto příkladu obsahuje odkazy na objekty, které jsou definovány ve vzorové aplikaci v Postupy: Dotazování na kolekci objektů (Průvodce programováním v C#).Chcete-li sestavit a spustit tuto metodu, vložit jej do StudentClass třídy v dané aplikaci a přidejte volání z Main metoda.
Když je tato metoda přizpůsobit vlastní aplikaci, nezapomeňte, že LINQ vyžaduje verzi 3.5 .NET Framework, a projekt musí obsahovat odkaz na System.Core.dll a použitím směrnice pro System.Linq.LINQ SQL do XML LINQ a LINQ DataSet typy vyžadují další usings a odkazy.Další informace naleznete v tématu Postupy: Vytvoření projektu LINQ.