我開始在我的MVC4應用程序和我有問題使用OData的排序依據複雜的類型,是我不能因爲我使用複雜的對象在我的IQueryable進行任何排序或篩選操作。下面是我想做到的事情一個簡單的例子:使用OData的
我的API控制器試圖返回MyObjects的集合作爲IQueryable的。
public IQueryable Get()
{
List<MyObject> myObjects = GetMyObjects();
return myObjects.AsQueryable() ;
}
每個myObject的包含有我想要排序和/或過濾的性能的InnerObject。
public class MyObject
{
[Key]
public MyInnerObject innerObject{ get; set; }
public MyObject(Dictionary<string, object> value)
{
innerObject= new MyInnerObject(){
item = value["item"].ToString(),
itmdesc = value["itmdesc"].ToString()
};
}
}
public class MyInnerObject
{
public string item { get; set; }
public string itmdesc { get; set; }
}
我可以成功地通過URL
localhost:5050/Test/Get?$top=10
但我真的希望能夠使用
localhost:5050/Test/Get?$top=10&$orderby=innerObject.item
我已經盡了排序結果執行上面的命令
localhost:5050/Test/Get?$top=10&$orderby=innerObject.item
localhost:5050/Test/Get?$top=10&$orderby=innerObject/item
localhost:5050/Test/Get?$top=10&$orderby=item
任何建議蒸發散?
編輯:
我應該指出,它的工作原理,如果我把內MyObject來的項目和itmdesc屬性,但我的目的(這是我的複雜的實體的只是一個縮小的版本),他們將需要被包裹在一個複雜的類型。
在我的API控制,我也嘗試過的IQueryable <爲MyObject>但是,這並不有所作爲
是的,我只是不明白。當我在對象名稱周圍添加單引號時,$ filter工作。試過,orderby和...一樣沒有。 –