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

一行行取出。

相关推荐
唐青枫1 天前
C#.NET Mapperly 深入解析:源生成映射、安装使用与工程化取舍
c#·.net
大G的笔记本1 天前
Java WebSocket客户端--java.net.http.HttpClient
java·websocket·.net
波波0071 天前
每日一题:.NET 性能优化常用手段有哪些?
性能优化·.net
时光追逐者1 天前
C#/.NET/.NET Core技术前沿周刊 | 第 69 期(2026年4.01-4.12)
c#·.net·.netcore
CSharp精选营1 天前
for和foreach到底谁快?刚子跑了1亿次循环,告诉你真相
c#·.net·foreach·for循环
曲幽2 天前
我用fastapi-scaff搭了个项目,两天工期缩到两小时,老板以为我开挂了
python·api·fastapi·web·celery·cli·db·alembic·fastapi-scaff
light blue bird2 天前
主从执行端动机模块工序协同组件
jvm·数据库·.net·桌面端