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

一行行取出。

相关推荐
步步为营DotNet21 小时前
深度探索.NET 中 IAsyncEnumerable:异步迭代的底层奥秘与高效实践
java·jvm·.net
时光追逐者1 天前
ASP.NET Core 依赖注入的三种服务生命周期
后端·c#·asp.net·.net·.netcore
一个帅气昵称啊1 天前
.Net如何优雅的实现发送邮件服务
.net·mail·邮件
时光追逐者2 天前
一个 WPF 开源、免费的 SVG 图像查看控件
开源·c#·.net·wpf
武藤一雄2 天前
C# 中线程安全都有哪些
后端·安全·微软·c#·.net·.netcore·线程
de之梦-御风2 天前
【WebAPI 模拟器】.NET 8/9 + Minimal API + Swagger + DI + WPF Host
.net·wpf·web
AI题库2 天前
NopCommerce 4.9.3开发实战 1.2 开发环境搭建指南(.NET 9+ & Visual Studio 2022)
ide·microsoft·.net·visual studio
我是唐青枫2 天前
C#.NET 索引器完全解析:语法、场景与最佳实践
c#·.net
追逐时光者2 天前
一款基于 .NET 9 构建的企业级 Web RBAC 快速开发框架
.net
幌才_loong2 天前
深入解析 C# async/await 执行原理:从语法糖到状态机
后端·.net