我有一本价值观词典,比如"名字":"亚历克斯"

有没有办法把它作为查询的参数传递给Dapper?

下面是一个例子,说明我想做什么.

IDictionary<string, string> args = GetArgsFromSomewhere();
string query = "select * from people where Name = @Name";
var stuff = connection.Query<ExtractionRecord>(query, args);

推荐答案

对:

var dbArgs = new DynamicParameters();
foreach(var pair in args) dbArgs.Add(pair.Key, pair.Value);

然后传递dbArgs而不是args:

var stuff = connection.Query<ExtractionRecord>(query, dbArgs);

或者,您可以编写自己的类来实现IDynamicParameters.

请注意,如果您是从一个对象(dapper的常用方法)开始,您也可以使用此模板以DynamicParameters作为起点:

var dbArgs = new DynamicParameters(templateObject);

.net相关问答推荐

为什么Linq中的运算符逻辑不匹配结果,当值为0或在VB. NET中没有

如何在 C# 中将 HTTP 发布请求发送到另一个 API?

.net Maui 在单击按钮时访问 CollectionView 中的数据项

问:在 Blazor WASM 应用程序中存储 api 密钥的最佳方式是什么?

在.NET C#中截断整个单词的字符串

如何找到windows服务exe路径

什么是提升运算符?

将客户端证书添加到 .NET Core HttpClient

使用 C# 清除文本文件的内容

为什么 .NET 中没有可序列化 XML 的字典?

C# 编译为 32/64 位,或任何 cpu?

创建多个线程并等待所有线程完成

在 WPF DataGrid 中绑定 ComboBoxColumn 的 ItemsSource

错误 NU1605 检测到包降级

接口属性的 XML 序列化

并发字典正确用法

如何将 MailMessage 对象作为 *.eml 或 *.msg 文件保存到磁盘

在 C# 中转义无效的 XML 字符

C# ListView 列宽自动

浮动与双重性能