阅读量:1
在LINQ中,GroupBy方法用于根据指定的键将序列中的元素分组。它返回一个包含分组的元素的序列。GroupBy方法可以接受一个键选择器函数,用于从序列的元素中提取键。以下是GroupBy方法的语法:
public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>( this IEnumerable<TSource> source, Func<TSource, TKey> keySelector )
在上述语法中,source表示要分组的序列,keySelector是一个函数,它根据每个元素返回一个键。
以下是一个示例,演示如何使用GroupBy方法:
var students = new List<Student>() { new Student { Name = "John", Age = 20 }, new Student { Name = "Jane", Age = 19 }, new Student { Name = "Tom", Age = 20 }, new Student { Name = "Alice", Age = 19 }, new Student { Name = "Bob", Age = 21 } }; var groupedStudents = students.GroupBy(s => s.Age); foreach (var group in groupedStudents) { Console.WriteLine($"Age: {group.Key}"); foreach (var student in group) { Console.WriteLine($"Name: {student.Name}"); } }
在上面的示例中,我们使用GroupBy方法根据学生的年龄将学生分组。然后,在foreach循环中,我们遍历每个分组,并打印出年龄和学生的姓名。
输出将如下所示:
Age: 20 Name: John Name: Tom Age: 19 Name: Jane Name: Alice Age: 21 Name: Bob
上述示例中的Student类定义如下:
public class Student { public string Name { get; set; } public int Age { get; set; } }
请注意,GroupBy方法返回一个IEnumerable<IGrouping<TKey, TSource>>
,其中IGrouping<TKey, TSource>是一个表示具有相同键的元素的集合的接口。