Как разобрать фильтр OData $ в C # - PullRequest
0 голосов
/ 04 июля 2018

Фильтр манипуляций с данными

Как я могу манипулировать фильтром в бэкэнде и требовать пары ключ-значение параметров запроса фильтра?

Выражение хотелось бы ниже

"? $ Filter = ((Имя eq 'Джон' или Name eq 'Грейс Пол') и (Отдел eq 'Финансы и учет'))"

Так как объединены 2 фильтра, и как я могу получить значения типа

Filter 1:
    Key: Name
    Operator: eq
    Value: Name

Operator: or

Filter 2:
    Key: Name
    Operator: eq
    Value: Grace Paul

Operator: and

Filter 3:
    Key: Department
    Operator: eq
    Value: Finance and Accounting

Я пытался с

  • ODataUriParser , но, похоже, он не поддерживается в веб-интерфейсе ASP.NET core 2.1.
  • Регулярное выражение - используя этот вопрос о переполнении стека , в моем случае он не работает, так как мой 3-й фильтр содержит и в значении & поэтому регулярное выражение не выполняется.
  • ODataQueryOptions в методе, но он дает необработанный текст, где его нельзя извлечь в пары ключ-значение, как упомянуто.

Я использую ASP.NET Core 2.1 Web API с OData v4 интеграция

Есть ли способ выполнить вышесказанное?

1 Ответ

0 голосов
/ 07 февраля 2019

Я знаю, что это не решение, но поделиться с вами на случай, если оно поможет вам позже. Это соответствует всем значениям справа от ':'

/(?<=: )[\w ]+/gm
...