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

一行行取出。

相关推荐
geovindu5 分钟前
CSharp: Strategy Pattern
开发语言·后端·c#·.net·.netcore·策略模式·行为模式
geovindu42 分钟前
CSharp: Task Scheduler
开发语言·后端·c#·.net·.netcore
海盗12342 小时前
微软技术日报 2026-09-10:Project Zenith 开发者设备亮相,.NET 11 RC1 可投产
microsoft·r语言·.net
唐青枫17 小时前
C#.NET PInvoke 深入解析:封送、内存布局与原生互操作实战
c#·.net
yywww19 小时前
GenHTTP on .NET 11 登顶HTTP Arena 多个榜单(这是何方神圣)
.net
咕白m6251 天前
C# 如何限制 PDF 复制、打印权限?
c#·.net
慧都小妮子1 天前
GcExcel 服务端 Excel 组件:无需安装 Office 的 Java/.NET 报表方案
java·.net·excel·gcexcel·服务端excel组件
我是唐青枫2 天前
C#.NET StructureMap 从依赖注入到项目实战
开发语言·c#·.net
Lost of 程序猿2 天前
C# 12 / .NET 9 新特性机制深度:编译器替你写了什么,哪些糖吃下去会出事
windows·c#·.net
唐青枫3 天前
C#.NET StructureMap 从依赖注入到项目实战
c#·.net