如何根据OData中孩子的某些属性订购对象?

时间:2012-09-24 19:32:16

标签: odata

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

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

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

有没有办法根据Keword标题的属性对结果进行排序?组件的子元素是ComponentPresentation的子元素?

3 个答案:

答案 0 :(得分:10)

只想提一下,自OData V4以来就有可能。您可以根据需要嵌套任意数量的扩展/选择/顺序/过滤器。现在它就像

一样简单

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

答案 1 :(得分:8)

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

AFAIK,使用基数很多的导航属性不可能做到这一点(尽管在扩展方案中用于订购扩展Feed中的内容会很有用。)

答案 2 :(得分:0)

通过在查询结束时使用expandobject / field来执行订单

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