修改web api 2 odata 获取查询结果
Modifying web api 2 odata get query result
我有一个 Odata 控制器获取方法,如下所示:
public class ProductController : ApiController
{
[MyEnableQuery(PageSize = 48, AllowedQueryOptions = AllowedQueryOptions.OrderBy | AllowedQueryOptions.Top | AllowedQueryOptions.Skip | AllowedQueryOptions.InlineCount | AllowedQueryOptions.Filter, AllowedFunctions = AllowedFunctions.SubstringOf | AllowedFunctions.ToLower)]
public IQueryable<tbDefine_Products> GetProducts([FromODataUri] int CategoryID)
{
ProductHandler _handler = new ProductHandler();
IQueryable<tbDefine_Products> _list =_handler.GetProductActiveList(CategoryID);
return _list;
}
}
现在我想在将查询结果发送到 clinet 之前修改它...我想要 _list.Tolist() 之类的东西,然后遍历结果数组
List<tbDefine_Products> _list2 = _list.ToList<tbDefine_Products>();
for (int i = 0; i < _list2.Count; i++)
{
/ *some code here to modify result */
}
我已经阅读了一些关于 ActionFilterAttribute 和 ActionFilterAttribute.OnActionExecuted 的内容
HttpActionExecutedContext 类 但我不知道如何实现我的想法
似乎您已经实现了有关 EnableQuery 属性的实现:MyEnableQuery
,您应该覆盖该方法:
public virtual IQueryable ApplyQuery(IQueryable queryable, ODataQueryOptions queryOptions)
先获取查询结果再过滤结果:
var result = base.ApplyQuery(queryable, queryOptions);
// filter the result.
return result;
我有一个 Odata 控制器获取方法,如下所示:
public class ProductController : ApiController
{
[MyEnableQuery(PageSize = 48, AllowedQueryOptions = AllowedQueryOptions.OrderBy | AllowedQueryOptions.Top | AllowedQueryOptions.Skip | AllowedQueryOptions.InlineCount | AllowedQueryOptions.Filter, AllowedFunctions = AllowedFunctions.SubstringOf | AllowedFunctions.ToLower)]
public IQueryable<tbDefine_Products> GetProducts([FromODataUri] int CategoryID)
{
ProductHandler _handler = new ProductHandler();
IQueryable<tbDefine_Products> _list =_handler.GetProductActiveList(CategoryID);
return _list;
}
}
现在我想在将查询结果发送到 clinet 之前修改它...我想要 _list.Tolist() 之类的东西,然后遍历结果数组
List<tbDefine_Products> _list2 = _list.ToList<tbDefine_Products>();
for (int i = 0; i < _list2.Count; i++)
{
/ *some code here to modify result */
}
我已经阅读了一些关于 ActionFilterAttribute 和 ActionFilterAttribute.OnActionExecuted 的内容 HttpActionExecutedContext 类 但我不知道如何实现我的想法
似乎您已经实现了有关 EnableQuery 属性的实现:MyEnableQuery
,您应该覆盖该方法:
public virtual IQueryable ApplyQuery(IQueryable queryable, ODataQueryOptions queryOptions)
先获取查询结果再过滤结果:
var result = base.ApplyQuery(queryable, queryOptions);
// filter the result.
return result;