我有(我认为是一个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