odata-объединение $expand и $select

в odata v4.0 Есть ли возможность объединения $expand и $select вместе?

У меня есть сценарий, в котором я пытаюсь получить определенные столбцы в productItemChoices и деталь. Ниже запрос даст вам все столбцы в productItemChoices. Мне нужна только одна колонка в productItemChoices

odata/Products(08f80b45-68a9-4a9f-a516-556e69e6bd58)?$expand=productItemChoices($expand=item($select=name))

2 ответов


после того, как прошло много времени, я, наконец, получил ответ. Мы можем гнездиться select внутри expand используя ; в качестве разделителя, что-то вроде

odata/Products(8)?$expand=choices($select=col1,col2;$expand=item($select=name))

это описано в OData версии 4 $expand документация. В документации также перечислены другие полезные примеры, такие как

Categories?$expand=Products($filter=DiscontinuedDate eq null)
Categories?$expand=Products/$count($search=blue)

в select вы можете использовать сущность / атрибут для выбора определенных атрибутов развернутых сущностей:

$select=productItemChoices/columnyouwant

Я не уверен в отношениях сущностей в вашем запросе. При глубоком расширении я использовал следующий синтаксис (без скобок) - в следующем, Я предполагаю, что продукты относятся к productItemChoices и productItemChoices имеют item

$expand=productItemChoices, productItemChoices/item

затем, чтобы выбрать

$select=productItemChoices/productItemChoicesGuid, productItemChoices/item/name

очевидно, что если отношения разные, вам нужно будет изменить его некоторые