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 — это всего лишь обходной путь, поэтому это не решение проблемы.

person Mateo Velenik    schedule 11.08.2015    source источник


Ответы (1)


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

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

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

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

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

person Fabian    schedule 11.08.2015