在C#开发中,处理集合数据是日常任务之一。而 LINQ(Language Integrated Query) 提供了一种强大且直观的方式来查询和操作数据。其中,GroupBy 方法是实现数据分组与聚合的核心工具。本教程将从零开始,带你深入理解如何使用 C# LINQ GroupBy 对数据进行分组、统计和汇总,即使你是编程小白也能轻松上手!

GroupBy 是 LINQ 中的一个方法,用于将集合中的元素按照某个键(key)进行分组。例如,你可以按部门对员工分组、按年份对订单分组,或者按产品类别对商品分组。
分组后,每个组都包含一个“键”和一组属于该键的元素。你还可以对每个组进行聚合操作,如求和(Sum)、计数(Count)、平均值(Average)等。
最简单的 GroupBy 用法如下:
var groups = source.GroupBy(item => item.KeyProperty);其中 source 是你的数据源(如 List、Array 等),KeyProperty 是你希望用来分组的属性。
假设我们有一组学生数据,每个学生有姓名、班级和分数。我们想按班级分组,并计算每个班级的平均分和学生人数。
首先定义学生类:
public class Student{ public string Name { get; set; } public string Class { get; set; } public int Score { get; set; }}然后创建一些测试数据:
var students = new List{ new Student { Name = "张三", Class = "A班", Score = 85 }, new Student { Name = "李四", Class = "B班", Score = 92 }, new Student { Name = "王五", Class = "A班", Score = 78 }, new Student { Name = "赵六", Class = "B班", Score = 88 }, new Student { Name = "孙七", Class = "A班", Score = 90 }}; 接下来使用 GroupBy 按班级分组并聚合数据:
var classStats = students .GroupBy(s => s.Class) .Select(g => new { ClassName = g.Key, StudentCount = g.Count(), AverageScore = g.Average(s => s.Score), TotalScore = g.Sum(s => s.Score) }) .ToList();// 输出结果foreach (var stat in classStats){ Console.WriteLine($"班级: {stat.ClassName}, 人数: {stat.StudentCount}, 平均分: {stat.AverageScore:F2}, 总分: {stat.TotalScore}");}运行结果:
班级: A班, 人数: 3, 平均分: 84.33, 总分: 253班级: B班, 人数: 2, 平均分: 90.00, 总分: 180有时你需要按多个字段分组,比如同时按“年级”和“班级”分组。这时可以使用匿名对象作为分组键:
var multiGroup = students .GroupBy(s => new { s.Grade, s.Class }) .Select(g => new { Grade = g.Key.Grade, Class = g.Key.Class, Count = g.Count() });通过本教程,你已经掌握了 C# LINQ GroupBy 的基本用法和实际应用。无论是简单的单字段分组,还是复杂的多字段聚合,GroupBy 都能帮你高效地完成数据整理任务。记住,结合 Select、Sum、Average 等方法,你可以轻松构建强大的数据查询逻辑。
如果你正在学习 LINQ分组聚合 或需要一份实用的 C#数据分组教程,希望这篇 LINQ GroupBy示例 能为你提供清晰的指引!
本文由主机测评网于2025-12-11发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025125969.html