Фильтр OData $ с несколькими предикатами - PullRequest
32 голосов
/ 22 декабря 2010

Если в моей модели есть две сущности: «Люди» и «Адреса», и у определенного Лица есть ноль или более адресов, к которым обращается свойство навигации AddressList, могу ли я написать запрос OData, который отвечает на следующий вопрос:

«У каких людей фамилия заканчивается Смитом и хотя бы на одном адресе?»

Мне кажется, я могу сделать только один предикат, например,

http://localhost:55100/DemographicsDataService.svc/People?$filter=endswith(LastName,'Smith')

(я еще не уверен, что могу даже написать $ фильтр для обработки второго предиката ... в этом случае предположим, что я пытаюсь ответить на вопрос "Фамилия заканчивается на кузнец и имя"начиная с Марии ")

1 Ответ

58 голосов
/ 26 декабря 2010

Вы можете определенно комбинировать предикаты в фильтре $.Например:

/People?$filter=endswith(LastName,'Smith') and startswith(FirstName,'Mary')

Подробную информацию о поддерживаемых операторах и т. Д. См. На этой странице: http://www.odata.org/documentation/odata-version-2-0/uri-conventions#FilterSystemQueryOption В настоящее время OData не может выразить вопрос "Люди, у которых есть хотя бы один адрес».В зависимости от ваших данных может оказаться целесообразным загрузить всех людей, отвечающих первым критериям, и определить вместо них тех, у кого есть адрес на клиенте.

...