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

一行行取出。

相关推荐
唐青枫7 小时前
C#.NET log4net 详解
c#·.net
ChaITSimpleLove18 小时前
使用 Dockerfile 构建基于 .NET9 的跨平台基础镜像
.net·dockerfile·.net aspire·dotnet-sdk·pwsh·docker image·docker buildx
专注VB编程开发20年1 天前
C#,VB.NET从JSON数据里提取数组中的对象节点值
c#·json·.net
界面开发小八哥1 天前
界面组件DevExpress WPF中文教程:Grid - 如何获取节点?
.net·wpf·界面控件·devexpress·ui开发
今晚打老虎z1 天前
dotnet-env: .NET 开发者的环境变量加载工具
前端·chrome·.net
我是唐青枫1 天前
C#.NET NLog 详解
开发语言·c#·.net
一线码农1 天前
MinHook 如何对 .NET 母体 CoreCLR 进行拦截
c#·.net·代码注入
佛·追命1 天前
.net wpf混淆
.net·wpf
编程乐趣1 天前
自学C#,要懂得用好对象浏览器
windows·.net