我正在为 RavenDB 中的某些数据结构创建自定义数据服务提供程序。
我正在使用 WCF 数据服务工具包中的 ODataContext,并且查询的某些部分像 TOP / SKIP 等一样工作。
public IEnumerable<Movie> GetAll(ODataQueryOperation operation)
{
IQueryable<Movie> query;
if (operation.TopCount != 0)
query = _session.Query<Movie>().Skip(operation.SkipCount).Take(operation.TopCount);
}
此代码支持以下查询:
http://<url>/oDataService.svc/Movies?$top=2
但我无法使过滤工作。
operation.FilterExpression 具有类型表达式,并且具有值:it=>(it.ReleaseYear == 2012)。我尝试了下面的代码,但“表达式”的值变为空。
Expression<Func<Movie, bool>> expression = operation.FilterExpression as Expression<Func<Movie, bool>>;
query = _session.Query<Movie>().Where(expression);
从浏览器触发的查询如下:
http:///oDataService.svc/Movies?$filter = ReleaseYear eq 2012