C# linq创建嵌套组

以下示例演示如何在 LINQ 查询表达式中创建嵌套组。 首先根据学生年级创建每个组,然后根据每个人的姓名进一步细分为小组。

public 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 = {outerGroup.Key}");
        foreach (var innerGroup in outerGroup)
        {
            Console.WriteLine($"\tNames that begin with: {innerGroup.Key}");
            foreach (var innerGroupElement in innerGroup)
            {
                Console.WriteLine("\t\t{innerGroupElement.LastName} {innerGroupElement.FirstName}");
            }
        }
    }
}

请注意,需要使用 3 个嵌套的 foreach 循环来循环访问嵌套组的内部元素。

posted on 2017-11-03 10:56  IT-HourseMan  阅读(1060)  评论(0编辑  收藏  举报