Получите реальную ценность от ValueKindC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Получите реальную ценность от ValueKind

Сообщение Anonymous »

У меня есть функция, которая создает предикат для фильтрации запроса из базы данных на основе Json, который поступает из запроса API. Я открыл другой вопрос, но не знаю лучше эту проблему. В новой версии .NET ядро ​​ASP.Net использует встроенный JsonConverter на основе System.Text.Json для привязки модели из ввода json.
У меня есть этот код р>

Код: Выделить всё

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
}
]
}
В приведенном выше Json значение в первом случае представляет собой строку, а во втором случае — целое число.
Как преобразовать item.Value в переменную правильного типа? Можно ли проверить тип ValueKind на основе item.Value?

Подробнее здесь: https://stackoverflow.com/questions/773 ... -valuekind
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Получите реальную ценность от ValueKind
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Можно ли получить реальную и мнимую ценность моих результатов в Abaqus, извлекая выходные данные истории с помощью скрип
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Dynamic C# valueKind = объект
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Tempdata ведет себя непоследовательно - иногда хранит последнюю ценность, иногда старую ценность
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Получите модели, имеющие определенную ценность в отношениях.
    Anonymous » » в форуме Php
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»