C# 集合多字段分组排坑
问题:
改造集合分组:
改造前:
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# 集合多字段分组排坑相关推荐
- java list 分组数量_java8 集合 多字段 分组 统计个数代码
1.user实体 package com.demo.dto; public class User { private Integer id; private String userName; priv ...
- java7java8 集合中对象的某一个字段分组
Java8根据单个字段分组 //假设传入一个非空订单集合 List<BaseOrder> orderList;//想要按照订单号分组 Map<String, List<Base ...
- java 多字段分组_java8 stream统计、汇总、多字段分组、多个列汇总统计
前言 本文将展示groupingBy收集器的多个示例,阅读本文需要先准备Java Stream和Java收集器Collector的知识. 一.GroupingBy收集器 Java8的Stream AP ...
- rtl8811au黑苹果10.15_荣耀MagicBook I5黑苹果折腾记(超详细教程与排坑)
本文主要介绍如何安装Win10 + Mac OS双系统,以及安装过程中可能遇到的一些坑. 本人的机型是:MagicBook I5-8250U MX150独显 8GB+256GB (VLT-W50),更 ...
- 将查询出来的数据按照一个字段分组且排序过程中,遇到的一些有关group的问题(分组排序应该使用partition by)
目录 我想要的效果 Group By Group By 语法 Group By 错误示例 重点提醒 功能实现(partition by 分区函数) 以往查询出来的数据想要按照某一个字段分组展示,直接按 ...
- Mysql导入导出亿条数据(排坑篇)
声明:这是我在大学毕业后进入第一家互联网工作学习的内容 背景:公司业务需要给某个活动的支付宝用户发送模板消息 经调查发现,此次活动的用户数量大约2亿,为了模拟生产环境,领导让我把生产库的用户信息(脱敏 ...
- node升级命令_Laravel Mix 4升级说明与“排坑儿”指南
本篇是我们系列课程<Laravel5.7优雅实战入门:第二版>和<Laravel 5.7&Vue 2.x深度整合实战:第二版>的扩展阅读. 想要更好的阅读体验,请观看原 ...
- es统计有多少个分组_es多字段分组去重统计
< es多字段分组去重统计 oracle中sql: select a1 ,b1 from dual group by a1 ,b1 或 select DISTINCT a1 ,b1 from d ...
- JSON,数组根据字段分组
function GroupbyName(data, Name) { //data数据源,Name 根据什么字段分组var map = {},dest = [];for (var i = 0; i & ...
最新文章
- 科大讯飞“AI同传”造假背后的两个关键问题
- .Net Discovery 系列之九--string从入门到精通(勘误版下)
- 数据库 DB database SQL DBMS
- APP-V与RemotoAPP
- python自动化测试框架pytest.pdf_Python 自动化测试框架 unittest 和 pytest 对比
- Appcan跨域交互
- [zz]volatile
- 不需要安全实验证也可以开微信号_热门行业:电子专用设备工程师证考试报名时间及报名须知...
- 使用OpenCV提取不同颜色物体
- python读取doc文件 语义识别_我可以让socket.makefile具有与常规文件相同的读取语义吗?...
- Linux常用到的指令汇总
- 计算机大赛软件应用与开发,我院学生在2019年中国大学生计算机设计大赛“软件应用与开发”决赛中荣获佳绩...
- Python入门--文件的读写,相对路径,绝对路径
- Spring MVC 解读——context:component-scan/
- mysql安装出现change_mysql-5.msi安装出现change,repaire,or remove installation
- 中国最美的十大宗教名山(图)
- 谈谈对 JWT 理解
- 如何快速批量建网站?
- 安装Windows10后,必做的6项优化,让你的电脑运行更快
- 使用Core Graphics绘画一个山寨微信icon
热门文章
- 王者荣耀背景html,王者荣耀镜背景故事是什么?王者荣耀镜背景故事分享
- 自锁时间电路plc_PLC中有自锁功能,请问自锁使什么意思?
- [操作系统] 王道2023操作系统208页图3.26勘误
- python的IO,以及codecs模块
- ava web 开发过程中常见的一些错误
- python用input输入字典_输入字典python_python输入字典_python用input输入字典 - 云+社区 - 腾讯云...
- 使用JdbcTemplate报 Incorrect column count: expected 1, actual 9错误解决
- NTC(负温度)热敏电阻.阻值的计算方式
- 钢铁侠--男人要对自己狠一点~~
- 以太网帧、IP 帧、UDP/TCP帧、http 报文结构解析