Udostępnij za pośrednictwem


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#)