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

一行行取出。

相关推荐
我是唐青枫8 小时前
C#.NET ref struct 深度解析:语义、限制与最佳实践
c#·.net
武藤一雄9 小时前
[奇淫巧技] WPF篇 (长期更新)
windows·microsoft·c#·.net·wpf
寰天柚子12 小时前
DotNetBar全面解析:.NET WinForms开发的高效UI控件库
ui·.net
追逐时光者12 小时前
精选 8 个 .NET 开发实用的类库,效率提升利器!
后端·.net
缺点内向16 小时前
如何在 C# .NET 中将 Markdown 转换为 PDF 和 Excel:完整指南
pdf·c#·.net·excel
啦啦啦~~~75416 小时前
【最新版】Edge浏览器安装!绿色增强版+禁止Edge更新的软件+彻底卸载Edge软件
数据库·阿里云·电脑·.net·edge浏览器
小兜全糖(xdqt)17 小时前
.net 8 添加swagger以及批量index,批量删除 elasticsearch
elasticsearch·jenkins·.net
向宇it17 小时前
【unity游戏开发——网络】unity对接steam,并上传发布游戏版本——Steamworks.NET
游戏·unity·游戏引擎·.net·交互
武藤一雄17 小时前
彻底吃透.NET中序列化反序列化
xml·微软·c#·json·.net·.netcore