Практическое руководство. Группирование группы (руководство по программированию в C#)
Обновлен: Ноябрь 2007
В следующем примере показано, как создавать вложенные группы в выражении запроса LINQ.
Пример
private static void QueryNestedGroups()
{
var queryNestedGroups =
from student in students
group student by student.Year into newGroup1
from newGroup2 in
(from student in newGroup1
group student by student.LastName)
group newGroup2 by newGroup1.Key;
// Three nested foreach loops are required to iterate
// over all elements of a grouped group. Hover the mouse
// cursor over the iteration variables to see their actual type.
foreach (var outerGroup in queryNestedGroups)
{
Console.WriteLine("DataClass.Student Level = {0}", outerGroup.Key);
foreach (var innerGroup in outerGroup)
{
Console.WriteLine("\tNames that begin with: {0}", innerGroup.Key);
foreach (var innerGroupElement in innerGroup)
{
Console.WriteLine("\t\t{0} {1}", innerGroupElement.LastName, innerGroupElement.FirstName);
}
}
}
}
Обратите внимание на то, что для выполнения итерации по внутренним элементам вложенной группы необходимы три вложенных цикла foreach.
Компиляция кода
В этом примере содержатся ссылки на объекты, определенные в образце приложения в разделе Практическое руководство. Запрос коллекции объектов (руководство по программированию на C#). Чтобы скомпилировать и запустить этот метод, вставьте его в класс StudentClass в этом приложении и добавьте его вызов из метода Main.
Настраивая данный метод для своего приложения, помните, что для LINQ требуется .NET Framework версии 3.5, и проект должен содержать ссылку на библиотеку System.Core.dll и директиву Using для библиотеки System.Linq. Типы LINQ to SQL, LINQ to XML и LINQ to DataSet требуют дополнительных директив Using и ссылок. Дополнительные сведения см. в разделе Практическое руководство. Создание проекта LINQ.
См. также
Основные понятия
Выражения запросов LINQ (Руководство по программированию в C#)