ODATA: проблема с оператором «ИЛИ» - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь создать URL-адрес ODATA с помощью оператора OR.

У меня есть два URL, которые отлично работают и имеют фильтр, как показано ниже

CorporateAccountCollection?$filter=(Phone eq '%2B33 123456789' or Phone eq '%2B33 1 23 45 67 89')

и

 CorporateAccountCollection?$filter=(Mobile eq '%2B33 123456789' or Mobile eq '%2B33 1 23 45 67 89')

Я попытался объединить выше 2 фильтра с другим OR оператором, , который не работает

/CorporateAccountCollection?$filter=((Phone eq '%2B33 123456789' or Phone eq '%2B33 1 23 45 67 89') or (Mobile eq '%2B33 123456789' or Mobile eq '%2B33 1 23 45 67 89'))

Кто-нибудь может сказать мне, что я делаю неправильно?

Спасибо Привет

Prat

1 Ответ

0 голосов
/ 05 февраля 2019

Поскольку ваши условия просто OR вместе, вы не используете все эти скобки для принудительного выполнения. (Скобки не должны иметь значения, но в зависимости от синтаксического анализатора запросов, который использует API, двойные скобки иногда могут быть ошибочно интерпретированы как неявные AND

Ваш запрос должен быть:

CorporateAccountCollection?$filter=Phone eq '%2B33 123456789' or Phone eq '%2B33 1 23 45 67 89' or Mobile eq '%2B33 123456789' or Mobile eq '%2B33 1 23 45 67 89'

или, если вам нравятся внешние скобки:

CorporateAccountCollection?$filter=(Phone eq '%2B33 123456789' or Phone eq '%2B33 1 23 45 67 89' or Mobile eq '%2B33 123456789' or Mobile eq '%2B33 1 23 45 67 89')

в этом сценарии нет сообщений об ошибках, поскольку критерии просто отфильтровывают строки, которые вы ожидаете увидеть.
Нет ошибки при анализе вашего запроса, откуда обычно приходят сообщения об ошибках.

Если это не сработает, пожалуйста, предоставьте необработанные результаты ваших двух запросов, которые действительно работают, чтобы мы могли помочь определить, в чем еще может быть проблема.

обычно эти проблемы сводятся к конкретным существительным со строками и значениями, которые вы сравниваете.

...