DataTable.Load(reader)注意事项

对于在C#中操作数据库查询,这样的代码很常见:

csharp 复制代码
using var cmd = ExecuteCommand(sql);
using var reader = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(reader);
...

一般的查询是没问题的,但是如果涉及主键列的查询,这个时候得注意了,如果select 字段有主键字段,并且主键列会存在多行相同值,如:

这时执行完Load你会发现dt只有1行...

解决办法就是不要使用Load,而是使用

csharp 复制代码
while(reader.Read())
...

一行行取出。

相关推荐
武藤一雄1 小时前
C# 中精准锁定类型信息指南:typeof vs GetType()
开发语言·windows·c#·.net·.netcore
唐青枫1 小时前
C#.NET ConcurrentQueue<T> 深入解析:无锁队列原理、FIFO 语义与使用边界
c#·.net
步步为营DotNet1 小时前
#.NET 11 与C# 14 助力边缘计算应用的安全与性能飞跃
c#·.net·边缘计算
追逐时光者11 小时前
DotNetGuide突破了10K + Star,一份全面且免费的C#/.NET/.NET Core学习、工作、面试指南知识库!
后端·.net
追逐时光者11 小时前
分享 5 种 .NET 桌面应用程序自动更新解决方案
.net
light blue bird15 小时前
原生控件GDI完成作业协同界面
jvm·数据库·.net·winform·gdi+界面
CSharp精选营15 小时前
值类型与引用类型:别再只背“栈和堆”了,看这 4 个实际影响
c#·.net·值类型·引用类型·栈和堆·编程指南
步步为营DotNet19 小时前
深入剖析.NET 11 中 Microsoft.Extensions.AI 在 AI 驱动后端开发的进阶应用
人工智能·microsoft·.net
林鸿群1 天前
竞彩网全栈项目实战:克隆与重构,从零构建 Vue3 + .NET 9 现代彩票网站
重构·.net
荔枝吻2 天前
【系列合集目录】.net开发选型记录
.net