C# LINQ的GroupBy()方法使用详解:根据指定键对序列元素进行分组

C# LINQ的GroupBy()方法

C# LINQ的GroupBy()方法可以根据指定的键对序列元素进行分组。它可以帮助我们从一组数据中提取出有用的信息,进而更好地处理数据。

GroupBy()方法的使用

GroupBy()方法的使用非常简单,它接受一个参数,即用于分组的键,它可以是一个函数,也可以是一个属性,甚至可以是一个表达式。

// 使用GroupBy()方法按照学生的年龄进行分组
var studentsGroupedByAge = students.GroupBy(s => s.Age);

// 使用GroupBy()方法按照学生的性别进行分组
var studentsGroupedByGender = students.GroupBy(s => s.Gender);

上面的代码中,我们根据学生的年龄和性别对学生进行分组,GroupBy()方法会返回一个IGrouping类型的集合,我们可以对这个集合进行迭代,从而获取分组后的数据:

// 遍历按照年龄分组后的学生
foreach (var group in studentsGroupedByAge)
{
    Console.WriteLine($"Age: {group.Key}");
    foreach (var student in group)
    {
        Console.WriteLine($"Name: {student.Name}");
    }
}

上面的代码中,我们遍历了按照年龄分组后的学生,再遍历每一组中的学生,从而获取分组后的数据。

GroupBy()方法的示例

下面我们来看一个具体的例子,假设我们有一个Student类,它有三个属性:Name(姓名)、Age(年龄)和Gender(性别),我们要根据Age和Gender属性对学生进行分组:

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

// 创建一个Student集合
List students = new List
{
    new Student { Name = "张三", Age = 18, Gender = "男" },
    new Student { Name = "李四", Age = 19, Gender = "男" },
    new Student { Name = "王五", Age = 20, Gender = "女" },
    new Student { Name = "赵六", Age = 18, Gender = "女" }
};

我们可以使用GroupBy()方法按照Age和Gender属性对学生进行分组:

// 使用GroupBy()方法按照学生的年龄和性别进行分组
var studentsGrouped = students.GroupBy(s => new { s.Age, s.Gender });

// 遍历按照年龄和性别分组后的学生
foreach (var group in studentsGrouped)
{
    Console.WriteLine($"Age: {group.Key.Age}, Gender: {group.Key.Gender}");
    foreach (var student in group)
    {
        Console.WriteLine($"Name: {student.Name}");
    }
}

上面的代码中,我们使用GroupBy()方法按照Age和Gender属性对学生进行分组,再遍历按照年龄和性别分组后的学生,从而获取分组后的数据。

以上就是C# LINQ的GroupBy()方法的使用,通过它,我们可以根据指定的键对序列元素进行分组,从而更好地处理数据。

本文链接:http://task.lmcjl.com/news/6613.html

展开阅读全文