次のような(odata形式だと思う)URLがあります:
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
ここで興味深いのは、$filter パラメーターです。「indexof(ItemType,'Attri') ge 0」という形式です。
ソースは、テキスト 'Attri' で ItemType 列をフィルター処理するグリッド (インフラジスティックスの igrid) です。
私の質問は次のとおりです。トップとスキップのパラメーターのマッピングは簡単でしたが、フィルターを行う方法です。それを解析して独自の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);
助けてくれてありがとう!
ラルシ