前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#-Group By 的使用

C#-Group By 的使用

作者头像
kdyonly
发布2023-10-19 18:47:10
2130
发布2023-10-19 18:47:10
举报
文章被收录于专栏:个人编程笔记

group by 是linq中的分组功能,能通过给定的字段对数据集进行分组,得到分组后的结果。

基本用法

使用扩展函数GroupBy对数据集合通过给定的字段进行分组,新建一个基于.net6的控制台项目,在program.cs中写如下代码,通过班级将学生进行分组展示(顶级语句 ,从 C# 9 开始,无需在控制台应用程序项目中显式包含 Main 方法。 相反,可以使用顶级语句功能最大程度地减少必须编写的代码。 在这种情况下,编译器将为应用程序生成类和 Main 方法入口点。):

代码语言:javascript
复制
// See https://aka.ms/new-console-template for more information

List<Student> students = new List<Student>() {
    new Student(){Name="1",Classroom="a"},
    new Student(){Name="2",Classroom="a"},
    new Student(){Name="3",Classroom="b"},
    new Student(){Name="4",Classroom="b"}
};

var groupStudents=students.GroupBy(student=>student.Classroom);

foreach(var groupStudent in groupStudents)
{
    Console.WriteLine(groupStudent.Key);
    foreach(var student in groupStudent)
    {
        Console.WriteLine($"{student.Name},{student.Classroom}");
    }
}



public class Student
{
    public string Name { get; set; }
    public string Classroom { get; set; }

}

分组求和

统计某同学的总分,参考代码:

代码语言:javascript
复制
// See https://aka.ms/new-console-template for more information


List<Student> students = new List<Student>() {
    new Student(){Name="小明",Classroom="a班",Subjects="数学",Score=100},
    new Student(){Name="小彭",Classroom="a班",Subjects="数学",Score=100},
    new Student(){Name="小明",Classroom="a班",Subjects="语文",Score=90},
    new Student(){Name="小黄",Classroom="b班",Subjects="语文",Score=90}
};

var groupStudents = from student in students
                    group student by new { student.Name, student.Classroom }
                    into res
                    select new Student
                    {
                        Name = res.First().Name,
                        Classroom = res.First().Classroom,
                        Subjects = "已考科目总分",
                        Score = res.Sum(x => x.Score),
                    };


foreach (var groupStudent in groupStudents)
{
    Console.WriteLine($"{groupStudent.Name},{groupStudent.Classroom},{groupStudent.Subjects},{groupStudent.Score}");
}



public class Student
{
    /// <summary>
    /// 姓名
    /// </summary>
    public string Name { get; set; }
    /// <summary>
    /// 班级
    /// </summary>
    public string Classroom { get; set; }
    /// <summary>
    /// 科目
    /// </summary>
    public string Subjects { get; set; }
    /// <summary>
    /// 分数
    /// </summary>
    public float Score { get; set; }

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本用法
  • 分组求和
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档