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

一行行取出。

相关推荐
追逐时光者2 小时前
C#/.NET/.NET Core技术前沿周刊 | 第 65 期(2026年1.1-1.11)
后端·.net
步步为营DotNet16 小时前
深度解析.NET 中IAsyncEnumerable:异步迭代的高效实现与应用】
服务器·数据库·.net
唐青枫16 小时前
C#.NET ConcurrentDictionary<TKey, TValue> 深度解析:原理与实践
c#·.net
装不满的克莱因瓶17 小时前
【踩坑】IDEA提交Git .gitignore忽略文件不起作用
java·git·.gitignore·踩坑
追逐时光者1 天前
精选 10 款 .NET 开源免费、功能强大的 Windows 效率软件
后端·.net
追逐时光者1 天前
一款开源、免费的 WPF 自定义控件集
后端·.net
bugcome_com1 天前
C# 字符串拼接全面指南
c#·.net·wpf
咕白m6251 天前
通过 C# 快速生成二维码 (QR code)
后端·.net