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

一行行取出。

相关推荐
学以智用20 小时前
.NET Core 仓储模式(Repository Pattern)完整教程
后端·.net
.NET修仙日记20 小时前
.NET EFCore批量插入性能优化实战:30秒 → 0.5秒
性能优化·c#·.net·.netcore·微软技术·efcore·踩坑实录
步步为营DotNet21 小时前
深挖.NET 11:.NET Aspire 在云原生应用状态管理的创新与实践
云原生·.net·wpf
我是唐青枫1 天前
C#.NET YARP 跨域配置详解:网关统一处理 CORS
开发语言·c#·.net
唐青枫2 天前
C#.NET YARP 跨域配置详解:网关统一处理 CORS
c#·.net
rockey6272 天前
AScript如何实现LINQ语法
sql·c#·.net·linq·script·eval·expression
喵叔哟3 天前
11.【.NET10 实战--孢子记账--产品智能化】--接入第三方平台
.net·openai
用户8291807154753 天前
dotnet基础开发之-Redis分布式锁
.net
步步为营DotNet3 天前
解锁.NET 11 新能:C# 14 在客户端安全编程的革新与实践
人工智能·microsoft·.net
步步为营DotNet3 天前
深入.NET 11:ASP.NET Core 10 高并发场景下的性能调优与安全加固
人工智能·microsoft·.net