OData WebAPI, запрашиваемый в памяти и чувствительный к регистру

У меня проблема с OData WebAPI и запросом EnumerableQuery (список, по которому я звонил .AsQueryable(), У меня есть набор сущностей, контроллер с методом Get, который возвращает IQueryable, Когда я запрашиваю эту сущность установить и использовать этот фильтр $

$filter=SomeStringProp eq 'SomeValue'

Я получаю только лица, чьи SomeStringProp равняется 'SomeValue' буквами и корпусом. Я хотел бы как-то заставить OData использовать регистр без учета регистра для всех строк - даже при вызовах функций, подобных этой

$filter=contains(SomeStringProp, 'apple')

Мне нужно OData для возврата сущностей, чей SomeStringProp равен 'APPLE', 'PineApple' а также 'AppleSauce'

Некоторая дополнительная информация:

  • База данных не имеет к этому никакого отношения; как указано, коллекция находится в памяти
  • Использование tolower() в запросах OData - это просто обходной путь, поэтому это не решение проблемы.

1 ответ

То, что вы спрашиваете, не поддерживается Odata.

  • Рекомендуемый способ учета регистра без учета регистра - использование tolower (или toupper).

  • Ключевое слово contains уже является частью odata v4 и реализовано в Web API.

Объедините их обоих, и все готово:)

Изменить: отлично работает с образцом WS.

Другие вопросы по тегам