如何根据 OData 中子级的某些属性对对象进行排序?

问题描述 投票:0回答:3

我正在尝试使用此 URL 在 OData 中进行一些自定义排序

localhost:82/odata.svc/ComponentPresentations?$filter=TemplateId eq 2894 and publicationId eq 10&$expand=Component/Keywords?$orderby=Title desc

其中

Component
ComponentPresentation
的属性,
Keywords
Component
的属性,我想根据关键字的
Title
属性对ComponentPresentation进行排序。但关键字和标题都不是组件表示的属性

有没有办法根据Keword标题的属性对结果进行排序?哪个是 Component 的子级,哪个是 ComponentPresentation 的子级?

odata
3个回答
16
投票

只想提一下,从 OData V4 开始这是可能的。您可以根据需要嵌套任意数量的扩展/选择/排序/过滤器。现在就这么简单

http://services.odata.org/V4/Northwind/Northwind.svc/Orders?$select=OrderID&$expand=Order_Details($select=UnitPrice;$orderby=Quantity)


14
投票

可以通过嵌套的单基数属性对结果进行排序,例如: http://services.odata.org/V3/Northwind/Northwind.svc/Orders?$top=50&$expand=Customer&$orderby =客户/城市

AFAIK,不可能使用具有多个基数的导航属性来执行此操作(尽管在扩展场景中对扩展提要中返回的内容进行排序会很有用)。


2
投票

在查询末尾附加带有扩展对象/字段的 order by

localhost:82/odata.svc/ComponentPresentations?$filter=TemplateId eq 2894 和publicationId eq 10&$expand=Component/Keywords?$orderby=Component/Title desc

© www.soinside.com 2019 - 2024. All rights reserved.