c# - 在c#中将字典转换为匿名对象?
问题描述
我有一个用 C# 构建的 Web API。此 Web API 用作查询 SQL 数据库的前端。我使用 SqlKata 作为引擎来执行查询。生成 WHERE 子句时,SqlKata 文档说明如下:
多个字段
如果要针对多个字段过滤查询,请传递一个表示 col/values 的对象。
var query = new Query("Posts").Where(new {
Year = 2017 ,
CategoryId = 198 ,
IsPublished = true,
});
我希望能够避免硬编码 WHERE 子句,而是基于传入的查询字符串。我的想法是将每个查询字符串名称和值添加到字典中,然后以某种方式在 SqlKata .Where() 子句中使用该字典的值。我想也许我可以将 Dictionary 转换为所需的匿名对象,但我无法让它工作。任何想法的人如何做到这一点?所以我的网址可能是:
https://webapi.com.au/api?store=120&name=james
字典:store=120 name=james
查询: var query = new query("Posts").Where(anonObject)
( anonObject 将是 {store=120,name=james} )
解决方案
您不需要匿名对象。查看 SqlKata 文档,您可以通过遍历字典来构建查询,如下所示:
//Assuming the dictionary is something like Dictionary<string, object>
var query = new Query("Posts");
foreach(var element in dictionary)
{
query = query.Where(element.Key, element.Value);
}
var result = query.Get();
注意:以前从未听说过 SqlKata,所以这只是通过查看文档。
推荐阅读
- c# - 小数的默认格式
- c# - 如何在c#中转换UTC时间ti ist tim
- python-3.x - 在python中生成多个PDF报告
- amazon-web-services - 如果我知道 url,如何在 AWS 管理控制台的 S3 中找到该文件?
- php - 按顺序合并数组
- sql-server - 用于将数据表复制到另一个表表单 ListView VB.net 的 SQL Server 查询参数
- java - keyHolder.getKey() 返回 null
- python - 如何冻结所有 PyQt4 用户输入,直到后端进程完成?
- spring-boot - 如果由于消费者处理消息时出错而未发送手动确认,如何以及何时重新传递 Kafka 消息?
- c++ - 两个大型数组之间的 C++ 标准化互相关