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

一行行取出。

相关推荐
追逐时光者5 小时前
精选 8 个基于 .NET 开源、功能强大的 AI 和 LLM 相关项目框架
.net·ai编程
追逐时光者5 小时前
分享 4 款基于 C# 编写、实用、开源的 Visual Studio 扩展插件
后端·.net·visual studio
武藤一雄7 小时前
C# 语法糖详解
后端·microsoft·c#·.net
武藤一雄8 小时前
C#:进程/线程/多线程/AppDomain详解
后端·微软·c#·asp.net·.net·wpf·.netcore
武藤一雄13 小时前
C#:Linq大赏
windows·后端·microsoft·c#·.net·.netcore·linq
ChaITSimpleLove15 小时前
从美食城的思考,如何构建.net高并发系统?
.net·高并发架构·dapr·以柔克刚·缓冲平滑过渡·分类归治·旁路缓存side-cache
武藤一雄16 小时前
C# Prism框架详解
开发语言·后端·微软·c#·.net·wpf
aerror17 小时前
关于静态修改.NET的DLL对某些函数进行HOOK的方法
.net
by__csdn17 小时前
第一章 (ASP.NET Core入门)第三节( 认识.NET Standard)
后端·c#·asp.net·.net·.netcore·f#·vb.net
用户44884667106019 小时前
.NET进阶——深入理解反射(4)利用反射获取信息(方法、特性)
.net