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())
...

一行行取出。

相关推荐
武藤一雄5 小时前
C# 关于多线程如何实现需要注意的问题(持续更新)
windows·后端·microsoft·c#·.net·.netcore·死锁
我是唐青枫11 小时前
深入理解 System.Lazy<T>:C#.NET 延迟初始化与线程安全
c#·.net
波波00713 小时前
.sln 时代落幕,.slnx成为 .NET 新标准?
.net·vs
mudtools13 小时前
基于.NET操作Excel COM组件生成数据透视报表
c#·.net·excel
冰茶_15 小时前
WPF路由事件:隧道与冒泡机制解析
学习·c#·.net·wpf·.netcore·mvvm
我是唐青枫16 小时前
深入理解 Volatile:C#.NET 内存可见性与有序性
c#·.net
武藤一雄17 小时前
C# 关于GC垃圾回收需要注意的问题(持续更新)
后端·微软·c#·.net·.netcore
武藤一雄17 小时前
C# 关于应用程序域(AppDomain)需要注意的问题(持续更新)
后端·microsoft·微软·c#·.net·.netcore
HarryXYC18 小时前
【vb.net】实现简单的内网文件分享网站
.net·web·文件共享·vb.net
bugcome_com18 小时前
.NET 核心:Func 与 Action 委托(从入门到实战)
c#·.net