C# LINQ的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}"); } }
上面的代码中,我们遍历了按照年龄分组后的学生,再遍历每一组中的学生,从而获取分组后的数据。
下面我们来看一个具体的例子,假设我们有一个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集合 Liststudents = 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