将字典转换为c#中的匿名对象?

时间:2019-01-01 02:56:12

标签: c# .net dictionary anonymous-types sqlkata

我有一个用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})

1 个答案:

答案 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,所以这仅仅是看文档而已。