2012-09-24 26 views
7

Tôi đang cố gắng để làm một số phân loại tùy chỉnh trong OData sử dụng URL nàyLàm thế nào tôi có thể đặt hàng các đối tượng theo một số thuộc tính của trẻ trong OData?

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

đâu Component là một tài sản của ComponentPresentationKeywords là tài sản của Component, và tôi muốn sắp xếp ComponentPresentation theo thuộc tính Title của từ khoá . Nhưng từ khóa và tiêu đề là thuộc tính của Bản trình bày thành phần

Có cách nào để sắp xếp kết quả theo thuộc tính của tiêu đề Keword không? Đứa con của thành phần là con của ComponentPresentation?

+0

@VladL trên ... (xin lỗi, tôi không có điểm đại diện cho bình luận), tôi không nghĩ rằng làm việc một trong hai. Tôi vừa thử và thêm Số lượng vào câu lệnh chọn cho Order_Details: http://services.odata.org/V4/Northwind/Northwind.svc/Orders?$select=OrderID&$expand=Order_Details($select=UnitPrice,Quantity ; $ orderby = Số lượng) Dường như Order_Details đang được sắp xếp theo Số lượng. –

Trả lời

6

Có thể sắp xếp các kết quả theo một tài sản duy nhất bản số lồng nhau, ví dụ: http://services.odata.org/V3/Northwind/Northwind.svc/Orders?$top=50&$expand=Customer&$orderby=Customer/City

AFAIK, nó không thể làm điều này với một tài sản chuyển hướng mà có một cardinality của nhiều (mặc dù nó sẽ là hữu ích trong các kịch bản mở rộng để đặt hàng những gì trở lại trong nguồn cấp dữ liệu mở rộng).

5

Chỉ muốn đề cập rằng có thể kể từ OData V4. Bạn có thể lồng bao nhiêu mở rộng/selects/orderby/filters như bạn muốn. Bây giờ nó cũng đơn giản như

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

+0

cú pháp là chính xác, nhưng thứ tự lồng nhau dường như không thay đổi bất cứ điều gì trong kết quả. – sroll

+0

@sroll Tôi đã dành rất nhiều thời gian với các dịch vụ OData mẫu từ odata.org và nhận thấy rằng bạn nhận được các kết quả khác nhau vào các thời điểm khác nhau, nếu dịch vụ không hề giảm;) Hãy thử với TripPin http: // www. odata.org/odata-services/ – VladL

+0

Nếu cú ​​pháp đúng, thật lạ khi nó không hoạt động sau đó: s – NicoJuicy

Các vấn đề liên quan