Анализ строки фильтра ODataC#

Место общения программистов C#
Ответить
Гость
 Анализ строки фильтра OData

Сообщение Гость »


Я использую radzen для создания фильтра и применения его к представлению, которое действует как мой набор данных. Почти все работает нормально, однако, когда я пытаюсь фильтровать по DateTime, я получаю сообщение об ошибке

Не удалось преобразовать дату и/или время из символьной строки.

Это результат конечного запроса, который находится непосредственно ниже. У которого есть часть времени, которая мне не нужна/не может быть использована таким образом.

ВЫБРАТЬ [а].[Продать по] , [а].[НазваниеПродукта] ОТ [dbo].[Продукты] AS [a] ГДЕ [a].[SellBy] = '2023-02-05T00:00:00.0000000' В моем коде для преобразования фильтра OData есть

if (IsNullableType(left.Type) && !IsNullableType(right.Type)) { if (справа — смещение ConstantExpression) { if(offset.Value — DateTimeOffset dateTimeOffset) { ДатаВремя? датаВремя = датаВремяСмещение.ДатаВремя; right = ConstantExpression.Constant(dateTime, typeof(DateTime?)); } } } Что дает мне приведенное ниже выражение, которое я передаю непосредственно в структуру сущности, где предложение

(Products.SellBy == 06.09.2023 12:00:00) Затем генерирует проблемное предложениеwhere

[a].[SellBy] = '2023-02-05T00:00:00.0000000' Запрос OData

SellBy eq 2023-09-06T00:00:00.000Z Мой вопрос заключается в том, как я могу проанализировать приведенный выше фильтр OData таким образом, чтобы я мог выполнять запросы = < = для дат. Я близок, однако мой результирующий запрос из выражения, которое я создаю, включает временную часть, которую я не могу использовать.

В коде есть еще кое-что, включая раздел, в котором я анализирую запрос OData в выражение OData, используя EDM, с которым я не очень знаком. Я пропустил это для краткости, но при необходимости могу опубликовать. Я не включил его, потому что считаю, что он работает нормально. Я могу запускать предикаты bool/text, используя то, что у меня есть.
Ответить

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

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

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

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

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