技术文章
C# 读取 Word 表格数据,这个库真好用(附完整代码)
本文介绍如何使用 C 和 Free Spire.Doc 库提取 Word 文档中的表格数据,无需安装 Microsoft Office。核心思路是逐层解析文档结构(Document → Section → Table → Row → Cell),提取单元格文本后以制表符分隔保存为文本文件。代码简洁、逻辑清晰,支持批量处理、导出 Excel、导入数据库等扩展。适合数据导入、报表生成等办公自动化场景。
写 EF Core 查询,90% 的人第一步就错了:刚子教你避开所有坑
本文介绍了EF Core 复杂查询几个核心技巧:关联查询用 Include + ThenInclude;动态筛选用表达式树或 PredicateBuilder;性能优化记住五条铁律——只读用 AsNoTracking,只取需要的字段用投影,N+1 问题用 Include,多集合用 AsSplitQuery,分页前必须排序。最重要的是,学会查看生成的 SQL,别把 EF Core 当黑盒。把 EF Core 当成带类型安全的 SQL 生成器,90% 的复杂查询场景你都能搞定。
序列化 JSON 时崩了?99% 是 EF 延迟加载惹的祸,三种解法拿走不谢
本文介绍了EF 默认开启延迟加载,查主表时不带明细,等你要用时才偷偷查数据库。如果此时 DbContext 已释放,就会报 ObjectDisposedException。解决方案有三:关掉延迟加载、用 Include/ThenInclude 提前加载、或用 DTO 投影。EF6 和 EF Core 的 Include 语法有差异,EF Core 的 ThenInclude 更直观。最佳实践:Web 应用全局关闭延迟加载,只读查询用 AsNoTracking,优先用 DTO。记住:在 DbContext 活着的时候,把需要的数据都显式加载好。
C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生
本文讲了保存主表+明细+条件,要么全成要么全败,事务得这么写:用using TransactionScope自动回滚,try-catch放事务里面,别把异常直接扔给用户。新增主表后记得回填自增ID,更新模式要先删干净旧的再插新的。每个DAL返回值都要检查,失败了立刻停止,别调Complete()。导航属性用Include提前加载,不然DbContext一关就崩。隔离级别别用默认的Serializable,指定ReadCommitted更稳。照着这个套路写,数据一致性稳稳的。
AutoMapper三板斧:值转换器、条件映射、自定义解析器,复杂映射不再愁
AutoMapper用得好能省大把时间,但光会CreateMap可不够。刚子教你三个高级技巧:值转换器专治类型不匹配,比如数据库的decimal金额转成前端要的“$123.45”;条件映射让你想清楚再动手,不满足条件就不映射;自定义解析器搞定复杂拼凑逻辑,比如把姓和名合成全名。把映射逻辑收进Profile里,业务代码干干净净。学会这三招,复杂对象映射不再愁。
C#性能优化:7个实战技巧减少代码运行时间
C 再次登顶!2025 年 TIOBE 年度编程语言榜单揭晓,C 摘得桂冠。这已经是 C 三年内第二次获此殊荣。但语言再好,代码写得慢也是白搭。本文从算法优化到内存管理,7 个实战技巧让你的代码快如闪电。
for vs foreach性能对比:刚子跑了1亿次循环,告诉你谁更快
for和foreach到底谁快?刚子跑了1亿次循环告诉你:数组两者差不多,List的foreach略快,链表和字典只能用foreach。日常写代码别纠结那几微秒,除非你是做游戏引擎这种极端性能场景。真要选,优先用foreach,代码更清晰、更安全。面试官问起来,记得分情况回答。记住:先让人看懂,再让机器跑快。
ASP.NET Core Blazor简介和快速入门一(基础篇)
大家好,我是码农刚子。本篇文章介绍了ASP.NET Core Blazor的简介和基础语法。Blazor是微软推出的基于.NET的Web框架,支持C构建交互式前端,无需JavaScript。提供Server、WebAssembly和Hybrid三种托管模式,分别适用于实时通信、离线运行与跨平台原生应用开发,实现全栈C开发体验。
值类型与引用类型:别再只背“栈和堆”了,看这 4 个实际影响
值类型和引用类型,说大不大,说小不小。面试背概念不难,难的是写代码的时候能自然而然地想到这些区别。我刚入行那会儿也在这上面栽过跟头,改一个对象改了半天发现改的是副本,排查到半夜。后来慢慢才悟出来:概念不是用来背的,是用来救命的。
Dispose 不释放?C# 资源泄漏的 3 种隐蔽场景排查
大家好,我是码农刚子。最近在做项目代码审查时,发现了一个有意思的现象:大家都知道要用 using 或 Dispose() 来释放资源,但真正遇到资源泄漏时,还是一脸懵。有人问我:"刚哥,我都调用 Dispose() 了,为什么内存还在涨?"说实话,这个问题问得好。因为 Dispose 不释放 的坑,远比你想象的要深。今天我就从 6 年 .NET 开发的经验出发,给你揭露 3 种最隐蔽、最容易踩的资源泄漏场景。
ML.NET 快速入门与实践教程:开源机器学习框架
大家好!我是码农刚子。今天和大家聊一聊ML.NET 如何快速入门。ML.NET 是微软为 .NET 开发者量身打造的机器学习框架,让你无需离开熟悉的 C 环境,就能将智能功能集成到应用中。本文将从一个简单的成绩预测案例入手,逐步带你掌握数据加载、模型训练、评估和预测的全流程,后面有时间还会介绍能大幅提升效率的 Model Builder 可视化工具。
聊一聊 C# 中的闭包陷阱:foreach 循环的坑你还记得吗?
大家好,我是刚子,一个写了六年代码的.NET程序员。今天咱们聊一个经典老坑——C 里 foreach 配合闭包(Lambda、匿名方法)时的诡异行为。如果你是 .NET 大佬,肯定被它咬过;如果你刚入行,听完这个故事,以后面试、写代码都能少踩一个雷。
C# 面试高频题:装箱和拆箱是如何影响性能的?
装箱和拆箱是C为了统一类型系统而提供的便利,但便利背后是有代价的。理解它的性能影响,写出能避免无谓装箱的代码,是C开发者进阶的必修课。下次面试被问到这道题,不妨从概念到实战,一层层剥开,展示出你对底层机制的深刻理解。
字符串拼接用“+”还是 StringBuilder?别再凭感觉写了
问题:拼接字符串,到底用哪个? 先问个实在的问题:你在代码里怎么拼接字符串? 很多兄弟可能是这么写的: string str ="Hello"+" "+"World"; //当然这里只是举个例子 也有的会在循环里这么干: string resu...
.NET对象转JSON,到底有几种方式?
问题:对象转JSON,到底该用哪个库? 前几天在其中一个群里看到个挺有意思的对话: >“兄弟,你那个接口返回的JSON咋弄的?” >“就JsonConvert.SerializeObject啊,还能咋弄。” >“这不是Newtonsoft.Json吗?现在新项目不是推荐用Syste...