我使用breeze.net来处理ODATA查询。这是我的终点:
public IQueryable<Car> Cars()
{
IQueryable<Car> cars = this.context.Cars.Where(x => x.Color == "Blue");
return cars;
}
如果从客户端传递过滤器或分页,则在上述方法返回时,它们将正确应用于IQueryable。
但是我想在它返回之前应用它们,因为我想调用ToList()并对数据进行一些处理:
public IQueryable<Car> Cars()
{
IQueryable<Car> cars = this.context.Cars.Where(x => x.Color == "Blue");
var myCars = cars.ToList()
// do stuff
return cars.AsQueryable();
}
显然上述工作,但没有应用从客户端传递的过滤器/分页。有没有办法实现这个目标? (仅供参考我使用NHibernate所以NHContext,而不是EntityFramework)
答案 0 :(得分:0)
您使用的是WebAPI OData支持吗?如果是这种情况,我认为你可以沿着这些方向做点什么:
public virtual IEnumerable<Car> YourGetCarsWebApiEndpoint(ODataQueryOptions<Car> options)
{
var queryable = yourCarsRepository.Cars();
// Explicitly apply OData options to queryable:
queryable = (IQueryable<Car>)options.ApplyTo(queryable);
var cars = queryable.ToList();
// Do stuff:
return cars;
}