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

一行行取出。

相关推荐
mudtools4 小时前
.NET如何快速集成飞书API的最佳实践
c#·.net·飞书
用户7227868123448 小时前
对 .NET FileSystemWatcher引发内存碎片化的 反思
.net
季春二九1 天前
微软 .Net 运行库丨多语言丨离线全集丨静默安装丨多架构支持
microsoft·.net
mudtools1 天前
.NET集成飞书API最佳实践:基于Mud.Feishu的飞书二次开发实践
c#·.net
玩泥巴的1 天前
.NET项目中如何快速的集成飞书API
c#·.net·飞书
Crazy Struggle1 天前
开源 .NET 工作流引擎 + 可视化设计,轻松搞定 OA/CRM/ERP 开发
.net·工作流
Jackson@ML2 天前
2025最新版.NET 10.0 for Mac安装使用指南
macos·.net
唐青枫2 天前
一文搞懂 C#.NET DateTimeOffset:时间戳、时区与偏移量全掌握
c#·.net
开开心心_Every2 天前
Excel图片提取工具,批量导出无限制
学习·pdf·华为云·.net·excel·harmonyos·1024程序员节
shepherd枸杞泡茶2 天前
.NET客户端自动更新的设计与实现
linux·.net