问题:

改造集合分组:

改造前:

 var list = new List<Student>();list.Add(new Student(1, "陈兆杰", 10, "班级一"));list.Add(new Student(2, "陈志杰", 10, "班级一"));list.Add(new Student(3, "废纸杰拉德", 10, "班级二"));list.Add(new Student(4, "马克吐恩", 12, "班级一"));var groups = list.GroupBy(m => new { m.Age, m.Class });

改造后:

将匿名类改成class后,发现不能正常多字段分组统计了

 var list = new List<Student>();list.Add(new Student(1, "陈兆杰", 10, "班级一"));list.Add(new Student(2, "陈志杰", 10, "班级一"));list.Add(new Student(3, "废纸杰拉德", 10, "班级二"));list.Add(new Student(4, "马克吐恩", 12, "班级一"));
var groups = list.GroupBy(m => new StudentKey{Age = m.Age,Class = m.Class});class StudentKey{public int Age { get; set; }public string Class { get; set; }}

Class:

        class Student{public int Id { get; set; }public string Name { get; set; }public int Age { get; set; }public string Class { get; set; }public Student(int id, string name, int age, string @class){Id = id;Name = name;Age = age;Class = @class;}public override string ToString(){return $"Id={Id},Name={Name},Age={Age},Class={Class}";}}

改造:

static void Main(string[] args){var list = new List<Student>();list.Add(new Student(1, "陈兆杰", 10, "班级一"));list.Add(new Student(2, "陈志杰", 10, "班级一"));list.Add(new Student(3, "废纸杰拉德", 10, "班级二"));list.Add(new Student(4, "马克吐恩", 12, "班级一"));Console.WriteLine("********************解决方法一 分割线******************");{var groups = list.GroupBy(m => new NewStudentKey{Age = m.Age,Class = m.Class});foreach (var group in groups){Console.WriteLine("分组值 Age:{0},Class:{1}", group.Key.Age, group.Key.Class);foreach (var student in group){Console.WriteLine(student);}}}Console.WriteLine("********************解决方法二 分割线******************");//方法一方式,最大的区别在于不用侵入实体类添加代码{var groups = list.GroupBy(m => new StudentKey { Age = m.Age, Class = m.Class }, new StudentKeyComparer());foreach (var group in groups){Console.WriteLine("分组值 Age:{0},Class:{1}", group.Key.Age, group.Key.Class);foreach (var student in group){Console.WriteLine(student);}}}Console.ReadKey();}class NewStudentKey : IEquatable<NewStudentKey>{public int Age { get; set; }public string Class { get; set; }public override int GetHashCode(){return Age.GetHashCode() ^ Class.GetHashCode();}public bool Equals(NewStudentKey other){return Age == other.Age && Class == other.Class;}}class StudentKeyComparer : IEqualityComparer<StudentKey>{public bool Equals(StudentKey x, StudentKey y){return x.Age == y.Age && x.Class == y.Class;}public int GetHashCode(StudentKey obj){return obj.Age.GetHashCode() ^ obj.Age.GetHashCode();}}

C# 集合多字段分组排坑相关推荐

  1. java list 分组数量_java8 集合 多字段 分组 统计个数代码

    1.user实体 package com.demo.dto; public class User { private Integer id; private String userName; priv ...

  2. java7java8 集合中对象的某一个字段分组

    Java8根据单个字段分组 //假设传入一个非空订单集合 List<BaseOrder> orderList;//想要按照订单号分组 Map<String, List<Base ...

  3. java 多字段分组_java8 stream统计、汇总、多字段分组、多个列汇总统计

    前言 本文将展示groupingBy收集器的多个示例,阅读本文需要先准备Java Stream和Java收集器Collector的知识. 一.GroupingBy收集器 Java8的Stream AP ...

  4. rtl8811au黑苹果10.15_荣耀MagicBook I5黑苹果折腾记(超详细教程与排坑)

    本文主要介绍如何安装Win10 + Mac OS双系统,以及安装过程中可能遇到的一些坑. 本人的机型是:MagicBook I5-8250U MX150独显 8GB+256GB (VLT-W50),更 ...

  5. 将查询出来的数据按照一个字段分组且排序过程中,遇到的一些有关group的问题(分组排序应该使用partition by)

    目录 我想要的效果 Group By Group By 语法 Group By 错误示例 重点提醒 功能实现(partition by 分区函数) 以往查询出来的数据想要按照某一个字段分组展示,直接按 ...

  6. Mysql导入导出亿条数据(排坑篇)

    声明:这是我在大学毕业后进入第一家互联网工作学习的内容 背景:公司业务需要给某个活动的支付宝用户发送模板消息 经调查发现,此次活动的用户数量大约2亿,为了模拟生产环境,领导让我把生产库的用户信息(脱敏 ...

  7. node升级命令_Laravel Mix 4升级说明与“排坑儿”指南

    本篇是我们系列课程<Laravel5.7优雅实战入门:第二版>和<Laravel 5.7&Vue 2.x深度整合实战:第二版>的扩展阅读. 想要更好的阅读体验,请观看原 ...

  8. es统计有多少个分组_es多字段分组去重统计

    < es多字段分组去重统计 oracle中sql: select a1 ,b1 from dual group by a1 ,b1 或 select DISTINCT a1 ,b1 from d ...

  9. JSON,数组根据字段分组

    function GroupbyName(data, Name) { //data数据源,Name 根据什么字段分组var map = {},dest = [];for (var i = 0; i & ...

最新文章

  1. 科大讯飞“AI同传”造假背后的两个关键问题
  2. .Net Discovery 系列之九--string从入门到精通(勘误版下)
  3. 数据库 DB database SQL DBMS
  4. APP-V与RemotoAPP
  5. python自动化测试框架pytest.pdf_Python 自动化测试框架 unittest 和 pytest 对比
  6. Appcan跨域交互
  7. [zz]volatile
  8. 不需要安全实验证也可以开微信号_热门行业:电子专用设备工程师证考试报名时间及报名须知...
  9. 使用OpenCV提取不同颜色物体
  10. python读取doc文件 语义识别_我可以让socket.makefile具有与常规文件相同的读取语义吗?...
  11. Linux常用到的指令汇总
  12. 计算机大赛软件应用与开发,我院学生在2019年中国大学生计算机设计大赛“软件应用与开发”决赛中荣获佳绩...
  13. Python入门--文件的读写,相对路径,绝对路径
  14. Spring MVC 解读——context:component-scan/
  15. mysql安装出现change_mysql-5.msi安装出现change,repaire,or remove installation
  16. 中国最美的十大宗教名山(图)
  17. 谈谈对 JWT 理解
  18. 如何快速批量建网站?
  19. 安装Windows10后,必做的6项优化,让你的电脑运行更快
  20. 使用Core Graphics绘画一个山寨微信icon

热门文章

  1. 王者荣耀背景html,王者荣耀镜背景故事是什么?王者荣耀镜背景故事分享
  2. 自锁时间电路plc_PLC中有自锁功能,请问自锁使什么意思?
  3. [操作系统] 王道2023操作系统208页图3.26勘误
  4. python的IO,以及codecs模块
  5. ava web 开发过程中常见的一些错误
  6. python用input输入字典_输入字典python_python输入字典_python用input输入字典 - 云+社区 - 腾讯云...
  7. 使用JdbcTemplate报 Incorrect column count: expected 1, actual 9错误解决
  8. NTC(负温度)热敏电阻.阻值的计算方式
  9. 钢铁侠--男人要对自己狠一点~~
  10. 以太网帧、IP 帧、UDP/TCP帧、http 报文结构解析