首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用LINQ创建嵌套的group-by字典?

要使用LINQ创建嵌套的group-by字典,您可以使用以下步骤:

  1. 首先,确保您已经引用了System.Linq命名空间。
  2. 创建一个数据集合,例如一个List<T>,其中T是一个包含要分组的属性的类。
  3. 使用GroupBy方法对数据集合进行分组。
  4. 对每个分组进行嵌套分组。
  5. 将结果转换为字典。

以下是一个示例,说明如何使用LINQ创建嵌套的group-by字典:

代码语言:csharp
复制
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        // 创建一个数据集合
        List<Student> students = new List<Student>
        {
            new Student { Name = "Alice", Age = 25, City = "New York", Score = 90 },
            new Student { Name = "Bob", Age = 23, City = "New York", Score = 85 },
            new Student { Name = "Charlie", Age = 26, City = "Los Angeles", Score = 92 },
            new Student { Name = "David", Age = 24, City = "Los Angeles", Score = 88 },
            new Student { Name = "Eva", Age = 25, City = "San Francisco", Score = 91 },
            new Student { Name = "Frank", Age = 23, City = "San Francisco", Score = 87 }
        };

        // 使用LINQ创建嵌套的group-by字典
        var nestedGroupedDict = students
            .GroupBy(s => s.City)
            .ToDictionary(g => g.Key, g => g
                .GroupBy(s => s.Age)
                .ToDictionary(sg => sg.Key, sg => sg.ToList()));

        // 输出结果
        foreach (var cityGroup in nestedGroupedDict)
        {
            Console.WriteLine($"City: {cityGroup.Key}");
            foreach (var ageGroup in cityGroup.Value)
            {
                Console.WriteLine($"  Age: {ageGroup.Key}");
                foreach (var student in ageGroup.Value)
                {
                    Console.WriteLine($"    Name: {student.Name}, Score: {student.Score}");
                }
            }
        }
    }
}

class Student
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; }
    public int Score { get; set; }
}

在这个示例中,我们首先创建了一个Student类的List<T>数据集合。然后,我们使用LINQ对数据集合进行分组,首先按城市(City),然后按年龄(Age)。最后,我们将结果转换为嵌套的字典,其中外层字典的键是城市名称,内层字典的键是年龄。输出结果显示了每个城市中每个年龄段的学生及其成绩。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【深入浅出C#】章节 5: 高级面向对象编程:泛型编程和集合类型

    高级面向对象编程是在基础面向对象编程的基础上进一步深入和拓展的一种编程范式。它强调封装、继承和多态的概念,并引入了泛型编程和集合类型等高级特性。高级面向对象编程提供了更灵活、可扩展和可复用的代码结构,能够帮助开发者构建更复杂、更高效的应用程序。高级面向对象编程中,泛型编程使得代码可以更加通用和灵活,能够处理不同类型的数据而无需重复编写相似的代码。集合类型则提供了丰富的数据结构和算法,使得数据的管理和操作更加便捷和高效。 通过深入理解和应用高级面向对象编程的概念和特性,开发者可以设计出更可靠、可维护和可扩展的软件系统。这种编程范式在现代软件开发中扮演着重要的角色,为开发者提供了强大的工具和思维方式,能够更好地满足不断变化的需求和挑战。

    02
    领券