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

一行行取出。

相关推荐
幌才_loong1 小时前
.NET 8 中 EF Core 的 DbContext 配置全解析
后端·.net
WebRuntime7 小时前
问世间,exe是何物?直教AI沉默、Web寡言(1)
javascript·c#·.net·web
稀饭过霍8 小时前
【.NET 10.0】使用FluentValidation
c#·mvc·.net
唐青枫11 小时前
C#.NET AsyncLock 完全解析:async/await 下的并发控制方案
c#·.net
用户4488466710601 天前
.NET 进阶 —— 深入理解线程(3)ThreadPool 与 Task 入门:从手动线程到池化任务的升级
c#·.net
步步为营DotNet1 天前
深度解析.NET中属性(Property)的幕后机制:优化数据访问与封装
java·算法·.net
Crazy Struggle1 天前
一款轻量级 WinForm 开源控件库,让老界面秒变高颜值
.net·winform·ui控件库
缺点内向1 天前
C#:轻松实现Excel到TXT的转换
后端·c#·.net·excel
bugcome_com1 天前
深入浅出 C# 中的 static 关键字——理解静态与实例的核心差异
c#·.net