Jak: wykonywanie podkwerendy w operacji grupowania (Podręcznik programowania C#)
W tym temacie przedstawiono dwa różne sposoby, aby utworzyć kwerendę, która porządkuje dane źródłowe do grup, a następnie wykonuje podkwerendy nad każdą grupę oddzielnie.Podstawowe techniki w każdym przykładzie jest grupowanie elementów źródłowych za pomocą kontynuacji o nazwie newGroup, a następnie generowanie nowych podkwerendy przeciwko newGroup.Podkwerenda to jest wykonywane w stosunku do każdej nowej grupy, utworzony przez zewnętrzne kwerendy.Należy zauważyć, że w tym konkretnym przykładzie końcowych danych wyjściowych nie jest grupą, ale płaski sekwencji typy anonimowe.
Aby uzyskać więcej informacji na temat grupy, zobacz Klauzula grupy (C# odniesienia).
Aby uzyskać więcej informacji na temat kontynuacji, zobacz w (C# odwołanie).W poniższym przykładzie użyto struktura danych w pamięci jako źródło danych, ale te same zasady stosuje się dla każdego rodzaju LINQ źródła danych.
Przykład
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);
}
}
Kompilowanie kodu
W tym przykładzie zawiera odwołania do obiektów, które są zdefiniowane w przykładowej aplikacji w Jak: kwerendy kolekcji obiektów (Podręcznik programowania C#).Aby skompilować i uruchomić tę metodę, wkleić ją do StudentClass klasy w tej aplikacji i dodać wywołanie z Main metody.
Jeśli ta metoda dostosowania się do własnej aplikacji, należy pamiętać, że LINQ wymaga wersji 3.5 .NET Framework, i projektu muszą zawierać odniesienie do System.Core.dll i za pomocą dyrektywy dla System.Linq.LINQ SQL, LINQ XML i LINQ DataSet typów wymagają dodatkowych usings i odwołania.Aby uzyskać więcej informacji, zobacz Jak: Tworzenie projektu LINQ.