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 天前
BGE-M3 多语言向量模型实战:.NET C# 从原理到落地
开发语言·c#·.net
武藤一雄2 天前
C#万字详解 栈与托管堆 的底层逻辑
windows·microsoft·c#·.net·.netcore
波波0072 天前
.NET真的被上海信创排除在外?
.net
武藤一雄2 天前
深入拆解.NET内存管理:从GC机制到高性能内存优化
windows·microsoft·c#·.net·wpf·.netcore·内存管理
江沉晚呤时2 天前
深入理解 Akka.NET:高并发与分布式系统的利器
开发语言·c#·.net
江沉晚呤时2 天前
C# 高级多态揭秘:从虚函数表到性能优化实战
开发语言·c#·.net
追雨潮2 天前
CLIP 多模态搜索实战:.NET + Python 跨语言图片检索
开发语言·python·.net
追雨潮2 天前
从内存到 ES:.NET 企业级向量检索架构演进之路
elasticsearch·架构·.net
无风听海2 天前
.NET10之HttpContext.RequestServices 深入解析
.net·asp.net core