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

一行行取出。

相关推荐
三天不学习12 小时前
【超详细】Vue3+UniApp+.NET8集成腾讯云IM即时通信全攻略
uni-app·.net·腾讯云·im·即时通信
步步为营DotNet18 小时前
.NET 11 中 Native AOT 在云原生场景下的深度剖析与实践
云原生·.net
webmote19 小时前
从零打造虚拟小智:用浏览器模拟 IoT 设备的实践之路
物联网·websocket·ai·大模型·llm·.net·小智
忧郁的蛋~1 天前
ASP.NET Core Web API 完全指南:请求管道、认证、错误处理到生产部署
前端·后端·asp.net·.net
乐于分享的阿乐1 天前
2026年最新 DBeaver下载安装与使用保姆教程(详细图文+安装包)
mysql·db·dbeaver
rrokoko1 天前
“计算器” VB.NET源码
.net·源码·vb.net·计算器·计算器源码
rrokoko1 天前
“扫雷”游戏 VB.NET源码
游戏·.net·源码·vb.net
小满Autumn1 天前
CommunityToolkit.Mvvm 架构笔记:现代 MVVM、源生成器与工程化实践
笔记·架构·c#·.net·wpf·mvvm
token-go1 天前
Means:基于 .NET 10 打造的开源自部署 S3 兼容对象存储服务
低代码·.net·rxjava
webmote332 天前
从零打造虚拟小智:用浏览器模拟 IoT 设备的实践之路
aigc·.net·嵌入式