我有(我認爲是一個OData的格式)的網址是這樣的:
http://localhost:2282/SSE.Web/History.cshtml?GetData=true&itemId=AKE-00129&pid=1&%24filter=indexof(ItemType%2C%27Attri%27)+ge+0&%24skip=0&%24top=50&%24inlinecount=allpages&_=1325589443808
這裏有趣的是$濾波器參數。它具有格式 「的indexOf(ItemType的, 'Attri')GE 0」
源是一個網格(iggrid從Infragistics的),其上有文字 'Attri'
我的問題是所述的ItemType柱過濾:映射頂部參數和跳過參數並不重要,但如何執行過濾器。我是否需要解析它並構建自己的LINQ,還是有其他方法?
這是我到目前爲止的代碼:
var skip = int.Parse(Request["$Skip"]);
var top = int.Parse(Request["$top"]);
var filter = Request(["$filter"]);
var db = Database.Open("SSEConnectionString");
var entries = db.Query("select * from eHistory order by timestamp desc")
Json.Write(new { results = entries.Where(????).Skip(skip).Take(top), totalRecCount = entries.Count() }, Response.Output);
感謝您的幫助!
Larsi
是否使用WCF數據服務?這應該爲你處理所有這些。如果沒有,請嘗試一下。 – 2012-01-03 12:45:42
不,我剛剛使用來自WebMatrix的數據庫迷你ORM。我希望避免WCF數據服務。但謝謝你的建議。這可能是最好的選擇。 – Larsi 2012-01-04 13:43:39
事情就是當你想要支持$ expand和$ select時,它會變得非常複雜。我也懷疑Json.Write會生成符合OData的有效載荷。也許這不是你的目標,但如果是這樣,它很快就會成爲問題。 – 2012-01-04 17:30:33