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

一行行取出。

相关推荐
ITMr.罗11 小时前
深入理解EF Core更新机制(开发中因为省事遇到的问题)
服务器·数据库·c#·.net
用户44884667106011 小时前
.NET进阶——深入理解委托(3)事件入门
c#·.net
总有刁民想爱朕ha12 小时前
.NET 8 和 .NET 6 性能对比的测试
.net·性能测试·.net6·.net8
总有刁民想爱朕ha13 小时前
银河麒麟v10服务器版Docker部署.NET 8 WebAPI教程
docker·容器·.net·银河麒麟v10服务器版
仪***沿14 小时前
C# 与台达 PLC 串口通讯实现实时监控
.net
武藤一雄14 小时前
C# 万字拆解线程间通讯?
后端·微软·c#·.net·.netcore·多线程
赵庆明老师15 小时前
NET 10 集成Session
缓存·.net
SEO-狼术15 小时前
Detect Trends with Compact In-Cell Visuals
.net
赵庆明老师16 小时前
.NET 日志和监控
.net
我是唐青枫16 小时前
C# Params Collections 详解:比 params T[] 更强大的新语法
c#·.net