Вопрос
Как я могу заказать ЛИБО одно поле или другое?
Гипотетический ответ
Вы можете использовать выражение в вашем заказе. Как и вы, вот рабочий пример:
https://services.odata.org/V3/Northwind/Northwind.svc/Customers/? $ orderby = concat (Телефон, Факс)
Но почему это не работает?
В соответствии со спецификацией ODATA это должно работать, но правда в том, что большинство реализаций бэкэнда не полностью соответствуют спецификации. Это довольно нормальная вещь.
Многие известные мне реализации бэкэнда просто НЕ ПОДДЕРЖИВАЮТ вложенные свойства или выражения в их порядке.
Особенно, когда серверная часть предоставляется системами, основанными на реляционных базах данных (более старые системы SAP, NAV или AX Systems ..), они, как правило, не поддерживают его, главным образом потому, что хотят напрямую выполнить запрос sh. вплоть до базы данных, или они просто не реализовали ее до сегодняшнего дня.
Вы никогда не сможете предположить, что бэкэнд полностью реализует все спецификации ODATA, большую часть времени, бэкэнд реализует только то, что было необходимо до сих пор .
Итак, практический ответ
Это не проблема спецификации ODATA. Ваш подход правильный. Вместо этого у вас есть не полностью реализованный бэкэнд. Ваше единственное решение - попросить их реализовать его или обработать на стороне клиента.
Кстати
ODATA v3 - очень странная и редко поддерживаемая версия ODATA. Обычно в наши дни есть ODataV2 или ODataV4.