linq中groupby的用法是什么

1137
2024/1/29 22:25:27
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在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>是一个表示具有相同键的元素的集合的接口。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: linq操作datatable的方法有哪些