Преобразовать словарь в анонимный объект в C #? - PullRequest
0 голосов
/ 01 января 2019

У меня есть веб-API, который я создаю в C #.Этот веб-API используется в качестве внешнего интерфейса для запроса базы данных SQL.Я использую SqlKata в качестве движка для выполнения запросов.При создании предложения WHERE в документации SqlKata говорится следующее:

Несколько полей

Если вы хотите отфильтровать запрос по нескольким полям, передайте объект, представляющий столбцы / значения.

var query = new Query("Posts").Where(new {
    Year = 2017 ,
    CategoryId = 198 ,
    IsPublished = true,
});

Я хочу быть в состоянии избежать жесткого кодирования предложения WHERE, а скорее основывать его на переданных в строках запроса.Моя идея состояла в том, чтобы добавить каждое имя и значение строки запроса в словарь, а затем каким-либо образом использовать значения этого словаря в предложении SqlKata .Where ().Я подумал, что, возможно, смогу преобразовать словарь в необходимый анонимный объект, но я не могу заставить его работать.Любые люди идеи о том, как это сделать?Поэтому мой URL может быть следующим:

https://webapi.com.au/api?store=120&name=james

Словарь: store = 120 name = james

Запрос: var query = new query ("Posts"). Где (anonObject)

(anonObject будет {store = 120, name = james})

1 Ответ

0 голосов
/ 01 января 2019

Вам не нужен анонимный объект.Глядя на документы 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, так что это просто взгляд на документы.

...