У меня есть этот код р>
Код: Выделить всё
public static Expression BuildPredicate(
this List filter)
{
Expression rtn = (t) => true;
if (filter != null)
foreach (var item in filter)
{
var predicate = BuildPredicate(
item.FieldName, item.Comparison,
item.Value);
rtn = rtn.AndAlso(predicate);
}
return rtn;
}
Код: Выделить всё
var predicate = BuildPredicate(
item.FieldName, item.Comparison,
item.Value);
[img]https://i. sstatic.net/KcWid.png[/img]
Причина в том, что item.Value — это значение System.Json.Text, а не переменная с правильным тип. Моя функция проверяет тип переменной для сравнения и ожидает допустимый тип, например int, string, date и т. д.
Что мне нужно, так это как минимум определить реальный тип объекта, в основном прочитать ValueKind и преобразовать/привести переменную к этому типу.
Я искал в Интернете и нашел нашел несколько примеров, но это не мой случай, потому что значение меняется. Например, я могу получить на входе API что-то вроде
Код: Выделить всё
{
"filterParams": [
{
"comparison": "Contains",
"fieldName": "WordName",
"value": "test"
},
{
"comparison": "==",
"fieldName": "ID",
"value": 23
}
]
}
Как преобразовать item.Value в переменную правильного типа? Можно ли проверить тип ValueKind на основе item.Value?
Подробнее здесь: https://stackoverflow.com/questions/773 ... -valuekind