C#基础:数据库中使用Linq作分组处理(反射/直接分组)
目录
一、使用反射分组
二、不使用反射分组
三、调用示例
四、代码demo
一、使用反射分组
private static List<GroupList<T>> GetGroupList<T>(List<T> entities, string groupByProperty)
{// 获取分组字段的类型var propertyInfo = typeof(T).GetProperty(groupByProperty);if (propertyInfo == null){throw new ArgumentException($"类型 {typeof(T).Name} 不包含名为 {groupByProperty} 的属性.");}// 按指定属性分组var groupedEntities = entities.GroupBy(e => propertyInfo.GetValue(e, null));// 创建分组列表List<GroupList<T>> groupLists = new List<GroupList<T>>();foreach (var group in groupedEntities){GroupList<T> groupList = new GroupList<T>{GroupKey = group.Key.ToString(), // 使用分组键作为GroupKeyList = group.ToList(), // 分组数据//Count = group.Count() //每组数据条数};groupLists.Add(groupList);}return groupLists;
}
二、不使用反射分组
private static List<GroupListStudent> GetGroupListSimple(List<Student> entities)
{// 根据班级分组var groupedStudents = entities.GroupBy(s => s.ClassNumber);// 创建分组列表List<GroupListStudent> groupLists = new List<GroupListStudent>();foreach (var group in groupedStudents){GroupListStudent groupList = new GroupListStudent{GroupKey = group.Key.ToString(),List = group.ToList(),// Count = group.Count()};groupLists.Add(groupList);}return groupLists;
}
三、调用示例
//反射获取分组
var result = GetGroupList(Students, "ClassNumber");
//直接获取分组
var result2 = GetGroupListSimple(Students);
四、代码demo
using System;
using System.Collections.Generic;
using System.Linq;namespace StudentClassExample
{// 学生类public class Student{public string Name { get; set; }public int ClassNumber { get; set; }public Student(string name, int classNumber){Name = name;ClassNumber = classNumber;}}public class GroupList<T>{public string GroupKey { get; set; }public int Count { get => List.Count; }public List<T> List { get; set; } = new List<T>();}public class GroupListStudent{public string GroupKey { get; set; }public int Count { get => List.Count; }public List<Student> List { get; set; } = new List<Student>();}// 主程序class Program{static void Main(string[] args){// 创建1班的学生List<Student> Students = new List<Student>{new Student("学生1-1", 1),new Student("学生1-2", 1)};// 创建2班的学生List<Student> class2Students = new List<Student>{new Student("学生2-1", 2),new Student("学生2-2", 2),new Student("学生2-3", 2)};Students.AddRange(class2Students);//反射获取分组var result = GetGroupList(Students, "ClassNumber");//直接获取分组var result2 = GetGroupListSimple(Students);;}private static List<GroupList<T>> GetGroupList<T>(List<T> entities, string groupByProperty){// 获取分组字段的类型var propertyInfo = typeof(T).GetProperty(groupByProperty);if (propertyInfo == null){throw new ArgumentException($"类型 {typeof(T).Name} 不包含名为 {groupByProperty} 的属性.");}// 按指定属性分组var groupedEntities = entities.GroupBy(e => propertyInfo.GetValue(e, null));// 创建分组列表List<GroupList<T>> groupLists = new List<GroupList<T>>();foreach (var group in groupedEntities){GroupList<T> groupList = new GroupList<T>{GroupKey = group.Key.ToString(), // 使用分组键作为GroupKeyList = group.ToList(), // 分组数据//Count = group.Count() //每组数据条数};groupLists.Add(groupList);}return groupLists;}private static List<GroupListStudent> GetGroupListSimple(List<Student> entities){// 根据班级分组var groupedStudents = entities.GroupBy(s => s.ClassNumber);// 创建分组列表List<GroupListStudent> groupLists = new List<GroupListStudent>();foreach (var group in groupedStudents){GroupListStudent groupList = new GroupListStudent{GroupKey = group.Key.ToString(),List = group.ToList(),// Count = group.Count()};groupLists.Add(groupList);}return groupLists;}}
}
相关文章:
C#基础:数据库中使用Linq作分组处理(反射/直接分组)
目录 一、使用反射分组 二、不使用反射分组 三、调用示例 四、代码demo 一、使用反射分组 private static List<GroupList<T>> GetGroupList<T>(List<T> entities, string groupByProperty) {// 获取分组字段的类型var propertyInfo typeof(T).…...
Revite二次开发_使用WPF和WebView2制作一个访问网站的窗口
如果想在revit里打开网页,可以使用WebView2来实现,下面是一个代码示例。 也尝试过使用CefSharp,但由于Revit本身也使用了CefSharp,所以需要根据不同的Revit版本选择适合的CefSharp版本,比较麻烦,所以最好还…...
Java Spring Boot 连接数据库
要在Java Spring Boot应用程序中连接数据库,您需要遵循以下步骤: 1. 添加数据库依赖项:在您的Spring Boot项目中的pom.xml文件中添加数据库依赖项,例如MySQL或PostgreSQL等。例如,如果您要连接MySQL数据库,…...
Java面试八股之消息队列中推模式和拉模式分别有哪些使用场景
消息队列中推模式和拉模式分别有哪些使用场景 消息队列的推模式(Push)和拉模式(Pull)各有不同的使用场景和优缺点。下面我会详细介绍这两种模式及其适用场景: 推模式(Push) 特点:…...
springboot jar是如何启动的
我们先来看一个项目的打完包后的MANIFEST.MF文件: Manifest‐Version: 1.0 Implementation‐Title: spring‐learn Implementation‐Version: 0.0.1‐SNAPSHOT Start‐Class: com.tulingxueyuan.Application Spring‐Boot‐Classes: BOOT‐INF/classes/ Spring‐Bo…...
Android 12系统源码_屏幕设备(二)DisplayAdapter和DisplayDevice的创建
前言 在Android 12系统源码_屏幕设备(一)DisplayManagerService的启动这篇文章中我们具体分析了DisplayManagerService 的启动流程,本篇文章我们将在这个的基础上具体来分析下设备屏幕适配器的创建过程。 一、注册屏幕适配器 系统是在Disp…...
常用Mysql命令
前言 本文列举了一些常见的mysql操作 正文 一、连接和登录 MySQL 1. 使用命令行登录 MySQL 注意:需要将mysql的bin目录导入到环境变量中 mysql -u 用户名 -p示例: mysql -u root -p执行上述命令后,系统会提示输入密码,输入…...
IDEA Debug工具
一、Debug工具栏 自定义debug工具栏:先把debug程序运行起来->右击->配置 常用的工具: 二、DeBug常用图标详解 三、DeBug实践操作 常规Debug:略。 Stream Chain:处理流式语句 Reset Frame:重置方法入栈 …...
ARM64的汇编资源
最近在写一本ARM64的教材,所以在晚上查找了一下相关资源,都是免费开源的,不包括盗版书籍。 Exploring AArch64 assembler Roger Ferrer Ibez的博客文章,写在2016-2017年,内容简单充实,适合入门。 《ARM6…...
实验室安全分级分类管理系统在高校中的具体应用
盛元广通高校实验室安全分级分类管理系统的构建,旨在通过科学合理的管理手段,提高实验室的安全水平,保障师生的人身安全,防止实验事故的发生。这一系统通常包括实验室安全等级评估、分类管理、风险控制、安全教育与培训、应急响应…...
使用 prerenderRoutes 进行预渲染路由
title: 使用 prerenderRoutes 进行预渲染路由 date: 2024/8/20 updated: 2024/8/20 author: cmdragon excerpt: prerenderRoutes 函数是 Nuxt 3 中一个强大的工具,它能够帮助开发者优化页面加载速度和改善用户体验。通过使用 prerenderRoutes,你能够灵活地指定需要预渲染的…...
【深度解析】WRF-LES与PALM微尺度气象大涡模拟
查看原文>>>【深度解析】WRF-LES与PALM微尺度气象大涡模拟 针对微尺度气象的复杂性,大涡模拟(LES)提供了一种无可比拟的解决方案。微尺度气象学涉及对小范围内的大气过程进行精确模拟,这些过程往往与天气模式、地形影响和…...
redis事件机制
redis服务器是一个由事件驱动(死循环)的程序,它总共就干两件事: 文件事件:利用I/O复用机制,监听Socket等文件描述符发生的事件,如网络请求时间事件:定时触发的事件,负责完成redis内部定时任务&…...
【C++】模拟实现vector
可以把vector看作升级版的数组,可采用下标进行访问,非常高效,大小可动态改变,会自动扩容,数据存储在堆空间上。 VECROR 成员变量、函数及模板总览构造函数和析构函数无参构造函数构造n个元素大小的空间并初始化通过某个…...
【CAN-IDPS】汽车网关信息安全要求以及实验方法
《汽车网关信息安全技术要求及试验方法》是中国的一项国家标准,编号为GB/T 40857-2021,于2021年10月11日发布,并从2022年5月1日起开始实施 。这项标准由全国汽车标准化技术委员会(TC114)归口,智能网联汽车分会(TC114SC34)执行,主管部门为工业和信息化部。 该标准主要…...
EASE-Grid是啥东西?
EASE-Grid(Equal-Area Scalable Earth Grid,等面积可扩展地球网格)是NASA设计的网格系统,主要用于存储和处理全球范围内的地球科学数据。可以被理解为一种特殊的投影方式,使得在全球范围内进行数据分析和可视化时&…...
前端用户管理模块方法及api分析
用户管理 方法及对应api 搜索 searchSysUser / GetSysUserListByPage 重置 resetData 添加用户 addShow :点击按钮后出现对话框,含有提交 submit / SaveSysUser、取消按钮 修改 editSysUser / UpdateSysUser 删除 deleteById / DeleteSysUser 分配角色…...
microsoft edge怎么关闭安全搜索
microsoft edge浏览器为用户提供了安全搜索功能,旨在帮助用户过滤掉搜索结果中出现的不当信息。然而,有些用户可能觉得安全搜索功能限制了他们的浏览体验或工作需求。下面就给大家带来关闭microsoft edge安全搜索的相关内容,一起来看看吧。&a…...
Qt | QSQLite内存数据库增删改查
点击上方"蓝字"关注我们 01、演示 参数随便设置 查询 修改 右键菜单是重点 手动提交,点击Submit All...
【论文阅读】SegNeXt:重新思考卷积注意力设计
《SegNeXt: Rethinking Convolutional Attention Design for Semantic Segmentation》 原文:https://github.com/Visual-Attention-Network/SegNeXt/blob/main/resources/paper.pdf 源码:https://github.com/Visual-Attention-Network/SegNeXt 1、简介 …...
Qwen3.5-2B轻量化多模态模型Python入门实战:零基础快速上手AI开发
Qwen3.5-2B轻量化多模态模型Python入门实战:零基础快速上手AI开发 1. 开篇:为什么选择Qwen3.5-2B入门AI开发 如果你刚接触AI开发,可能会被各种复杂的模型和术语吓到。Qwen3.5-2B是个不错的起点——它足够轻量,能在普通GPU上运行…...
二次元创作助手:OpenClaw调用Qwen3.5-9B自动生成同人图描述
二次元创作助手:OpenClaw调用Qwen3.5-9B自动生成同人图描述 1. 为什么需要二次元创作自动化? 作为一个长期混迹ACGN圈子的内容创作者,我每天要花费大量时间在Pixiv、微博超话和LOFTER上浏览同人作品。最头疼的莫过于看到一张惊艳的插图却想…...
LoRA训练助手效果展示:GPT模型微调前后对比
LoRA训练助手效果展示:GPT模型微调前后对比 1. 引言 你是否曾经遇到过这样的情况:用GPT模型生成的内容总是差那么点意思,要么风格不对,要么专业度不够,要么就是不符合你的特定需求?就像让一个通才来处理专…...
REX-UniNLU与LaTeX协同工作:智能学术论文写作助手
REX-UniNLU与LaTeX协同工作:智能学术论文写作助手 科研写作的痛点,只有经历过的人才懂:反复调整格式、手动整理参考文献、绞尽脑汁写图表描述... 但现在,AI技术正在改变这一切。 1. 学术写作的新革命 如果你正在写学术论文&#…...
SolidWorks插件发布踩坑实录:从RegAsm报错到安装包权限,我的C#二次开发交付心得
SolidWorks插件发布全流程避坑指南:从代码签名到权限管理的实战经验 第一次看到自己开发的SolidWorks插件在同事电脑上成功加载时,那种成就感难以言喻。但在此之前,我经历了无数次"为什么在我机器上能运行,到他那里就报错&qu…...
OpenClaw任务链设计:千问3.5-35B-A3B-FP8复杂流程自动化
OpenClaw任务链设计:千问3.5-35B-A3B-FP8复杂流程自动化 1. 为什么需要任务链自动化 上周我遇到一个典型的工作场景:需要从20份PDF报告中提取关键数据,整理成Excel表格,再根据这些数据生成分析图表,最后通过邮件发送…...
TEST文件夹:Pytest,集成测试,单元测试
在复杂的自动驾驶项目中,哪怕你只改了一行代码,都可能导致整个感知或控制系统崩溃。如果直接去训练,还会消耗大量算力。所以当你新写了一个功能(比如你改了采样逻辑),先不要急着去跑训练。先跑一下测试&…...
嵌入式Linux设备可靠升级方案设计与实践
1. 嵌入式Linux升级方案概述在嵌入式Linux设备开发中,软件升级是一个永恒的话题。作为一名嵌入式开发工程师,我经历过无数次凌晨三点被叫起来处理升级失败的痛苦经历。经过多年实践,我总结出一套同时支持本地和远程升级的可靠方案,…...
“德智米”齐聚港股!德适高研发高增长,领跑 AI 医疗新赛道
随着德适正式登陆港交所,北京智谱、上海 MiniMax、杭州德适组成的 “德智米”AI 三强正式齐聚港股,勾勒出中国 AI 产业从底层基建、C 端应用到 B 端垂直落地的完整版图。其中,德适以“医学影像大模型 医疗垂直场景 高增长商业化”的独特定位…...
无痛人流三天能出门吗?术后出行与身体恢复科学指南
很多女性在无痛人流术后都会关心出行与恢复问题,其中 “无痛人流三天能出门吗” 是高频咨询内容。术后恢复不仅关系到短期舒适度,也影响生殖系统长期健康。结合临床护理经验与行业康复标准,本文对术后出行时机、注意事项及科学修护方式进行客…...
