Фильтр OData $с несколькими предикатами
Если у меня есть две сущности в моей модели, "Люди" и "Адреса", а у конкретного Лица есть ноль или более адресов, доступ к которым осуществляется через свойство навигации AddressList, могу ли я написать запрос OData, который отвечает на следующий вопрос:/p >
"Какие люди имеют фамилию, заканчивающуюся в Смиту и по крайней мере один адрес?"
Мне кажется, что я могу сделать только один предикат, например
http://localhost:55100/DemographicsDataService.svc/People? $filter = endswith (LastName, 'Smith')
(Я еще не убежден, что даже могу написать $filter для обработки второго предиката.. в этом случае предположим, что я пытаюсь ответить на вопрос: "Фамилия заканчивается кузнецом и именем, начинающимся с Мэри" )
Ответы
Ответ 1
Вы можете точно комбинировать предикаты в $filter. Например:
/People?$filter=endswith(LastName,'Smith') and startswith(FirstName,'Mary')
Подробнее о поддерживаемых операторах см. на этой странице: http://www.odata.org/documentation/odata-version-2-0/uri-conventions#FilterSystemQueryOption
В настоящее время OData не имеет возможности выразить вопрос "Люди, имеющие хотя бы один адрес".
В зависимости от ваших данных может оказаться возможным загрузить все Люди, выполняющие первые критерии, и определить те, у кого есть адрес на клиенте.