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

一行行取出。

相关推荐
2CM_Embed5 小时前
TMS320F2837xD ePWM 的 DB 死区模块详解:AHC、ALC、AH、AL 模式与通道流向分析
db·al·ahc·死区·epwm·alc·ah
0x000716 小时前
译 Anders Hejlsberg 谈 C# 与 .NET
开发语言·c#·.net
AI行业学习17 小时前
.NET Framework 3.5 SP1 完整离线包(2029.5.29)
开发语言·windows·.net
AI行业学习18 小时前
.NET Framework 3.5 官方离线包下载+完整安装教程【2026.5.29】
windows·.net·notepad++
我是唐青枫19 小时前
C#.NET YARP 服务发现实战:接入 Consul 和 Kubernetes 动态发现后端服务
c#·服务发现·.net
一个帅气昵称啊19 小时前
NetcoreKevin:.NET 企业级智能体管理框架
.net
light blue bird19 小时前
工序路径主子表单工序组装图表组件
前端·数据库·信息可视化·.net·web端·razor page
SEO-狼术20 小时前
Visualize Trends with Bar Charts
pdf·.net
superonion062020 小时前
【DB2】【Oceanbase】使用OMS将DB2迁移到Oceanbase测试
oceanbase·db
步步为营DotNet20 小时前
解锁.NET 11:Native AOT 在高性能后端服务的深度实践与剖析
.net