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

一行行取出。

相关推荐
mudtools2 小时前
飞书 .NET SDK 事件处理的幂等性与去重机制
websocket·.net·飞书·webhook
小锋学长生活大爆炸3 小时前
【踩坑】MacOS26开启软件的麦克风权限,如腾讯会议
macos·会议·腾讯会议·安全模式·权限·踩坑·麦克风
唐青枫4 小时前
C#.NET ConcurrentBag<T> 设计原理与使用场景
c#·.net
玩泥巴的13 小时前
飞书 .NET SDK 事件处理的幂等性与去重机制
c#·.net·二次开发·飞书
喵叔哟14 小时前
20.部署与运维
运维·docker·容器·.net
bugcome_com18 小时前
WPF样式进阶实战:外置样式+MVVM主题切换+样式优先级全解析
c#·.net·wpf
时光追逐者18 小时前
TIOBE 公布 C# 是 2025 年度编程语言
开发语言·c#·.net·.net core·tiobe
步步为营DotNet1 天前
深度探索.NET 中ValueTask:优化异步性能的轻量级利器
java·spring·.net
潇潇云起1 天前
mapdb
java·开发语言·数据结构·db