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

一行行取出。

相关推荐
九鼎科技-Leo6 小时前
什么是 WPF 中的依赖属性?有什么作用?
windows·c#·.net·wpf
dot.Net安全矩阵11 小时前
.NET 通过模块和驱动收集本地EDR的工具
windows·安全·web安全·.net·交互
zls36536511 小时前
.NET开源实时应用监控系统:WatchDog
.net
djk888811 小时前
.net将List<实体1>的数据转到List<实体2>
数据结构·list·.net
Crazy Struggle16 小时前
功能齐全的 WPF 自定义控件资源库(收藏版)
.net·wpf·ui控件库
时光追逐者18 小时前
.NET 9 中 LINQ 新增功能实操
开发语言·开源·c#·.net·.netcore·linq·微软技术
zls36536520 小时前
.NET高效下载word文件
开发语言·c#·word·.net
八荒我为王1 天前
c#编码技巧(十九):各种集合特点汇总
c#·.net
桑榆肖物1 天前
将 .NET Aspire 添加到现有应用:前端 JavaScript 项目处理
前端·javascript·.net
shepherd枸杞泡茶1 天前
WPF动画
c#·.net·wpf