Проблема в дереве выражений LINQ в C# ⇐ C#
-
Гость
Проблема в дереве выражений LINQ в C#
У меня есть следующий образец документа в базе данных космоса.
{ "scheduleDate": "20230909", "количество":"456", .... ..... }
Я пытаюсь выполнить динамический запрос с использованием дерева выражений LINQ. Как сформировать запрос с использованием дерева выражений для приведенного ниже условия: количество больше или равно 400? Я получаю сообщение об ошибке, сообщающее, что строку нельзя использовать для сравнения в выражении. Есть ли какое-нибудь решение? Я знаю, что мы можем обновить схему в БД, но хотел проверить, есть ли в дереве выражений LINQ способ справиться с этим сценарием. Ниже приведен фрагмент кода для Datetime. Могу ли я сделать то же самое для строки?
Сравнение выраженийExpression; if (property.Type == typeof(DateTime?) && propertyValue.StartsWith("ge:")) { значение var = propertyValue[3..]; var valueConstant = Expression.Constant(DateTime.Parse(value)); var hasValueProperty = Expression.Property(свойство, "HasValue"); var valueProperty = Expression.Property(свойство, «Значение»); var hasValueExpression = Expression.Equal(hasValueProperty, Expression.Constant(true)); var valueExpression = Expression.GreaterThanOrEqual(valueProperty, valueConstant); ВыражениеСравнения = Выражение.ИАлсо(имеетВыражениеЗначения, ВыражениеЗначения); }
У меня есть следующий образец документа в базе данных космоса.
{ "scheduleDate": "20230909", "количество":"456", .... ..... }
Я пытаюсь выполнить динамический запрос с использованием дерева выражений LINQ. Как сформировать запрос с использованием дерева выражений для приведенного ниже условия: количество больше или равно 400? Я получаю сообщение об ошибке, сообщающее, что строку нельзя использовать для сравнения в выражении. Есть ли какое-нибудь решение? Я знаю, что мы можем обновить схему в БД, но хотел проверить, есть ли в дереве выражений LINQ способ справиться с этим сценарием. Ниже приведен фрагмент кода для Datetime. Могу ли я сделать то же самое для строки?
Сравнение выраженийExpression; if (property.Type == typeof(DateTime?) && propertyValue.StartsWith("ge:")) { значение var = propertyValue[3..]; var valueConstant = Expression.Constant(DateTime.Parse(value)); var hasValueProperty = Expression.Property(свойство, "HasValue"); var valueProperty = Expression.Property(свойство, «Значение»); var hasValueExpression = Expression.Equal(hasValueProperty, Expression.Constant(true)); var valueExpression = Expression.GreaterThanOrEqual(valueProperty, valueConstant); ВыражениеСравнения = Выражение.ИАлсо(имеетВыражениеЗначения, ВыражениеЗначения); }
Мобильная версия