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.