我有一个用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子句进行硬编码,而是将其基于传入的查询字符串。我的想法是将每个查询字符串名称和值添加到Dictionary中,然后以某种方式在SqlKata .Where()子句中使用该Dictionary的值。我以为也许可以将Dictionary转换为所需的匿名对象,但无法使其正常工作。关于如何执行此操作的任何想法?所以我的网址可能是:
https://webapi.com.au/api?store=120&name=james
字典: 商店= 120 名称=詹姆斯
查询: var query = new query(“ Posts”)。Where(anonObject)
(anonObject为{store = 120,name = james})
答案 0 :(得分:1)
您不需要匿名对象。查看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,所以这仅仅是看文档而已。