web-dev-qa-db-ja.com

odata-$ expandと$ selectの組み合わせ

Odata v4.0には、$ expandと$ selectを組み合わせるオプションがありますか?

ProductItemChoicesとitemの特定の列を取得しようとしているシナリオがあります。以下のクエリは、productItemChoicesのすべての列を提供します。 productItemChoicesに必要な列は1つだけです

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

これについて多くの時間を過ごした後、私は最終的に答えを得ました。 selectexpand内にネストするには、;を区切り文字として使用します。

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

これは OData v4 $expandドキュメント に記載されています。ドキュメントには、次のような他の有用な例もリストされています。

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

選択では、エンティティ/属性を使用して、展開されたエンティティの特定の属性を選択できます。

$select=productItemChoices/columnyouwant

クエリ内のエンティティの関係についてはわかりません。深く展開するとき、次の構文を使用しました(かっこなし)-以下では、ProductsがproductItemChoicesに関連し、productItemChoicesにitemがあると仮定しています

$expand=productItemChoices, productItemChoices/item

次に、選択する

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

明らかに、関係が異なる場合は、いくつか変更する必要があります

1
snow_FFFFFF