Porady: wykonanie podzapytania w operacji grupowania (Przewodnik programowania w języku 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 group — Klauzula (odwołanie w C#).
Aby uzyskać więcej informacji na temat kontynuacji, zobacz into (odwołanie w C#).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 Porady: kwerenda dotycząca kolekcji obiektów (Przewodnik programowania w języku 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 Porady: tworzenie projektu LINQ.
Zobacz też
Koncepcje
Wyrażenia kwerend LINQ (Przewodnik programowania w języku C#)