我有一个OData get方法:
public class ProductController : ApiController
{
[MyEnableQuery(PageSize = 48, AllowedQueryOptions = AllowedQueryOptions.OrderBy | AllowedQueryOptions.Top | AllowedQueryOptions.Skip | AllowedQueryOptions.InlineCount | AllowedQueryOptions.Filter | AllowedQueryOptions.Expand | AllowedQueryOptions.Select, AllowedFunctions = AllowedFunctions.SubstringOf | AllowedFunctions.ToLower)]
public IQueryable<tbDefine_Products> GetProducts(ODataQueryOptions opts,[FromODataUri] int CategoryID)
{
ProductHandler _handler = new ProductHandler();
IQueryable<tbDefine_Products> _list =_handler.GetProductActiveList(CategoryID);
return _list;
}
}
我已经超越了ApplyQuery方法来查询:
public override IQueryable ApplyQuery(IQueryable queryable, ODataQueryOptions queryOptions)
{
IQueryable<Object> _list = base.ApplyQuery(queryable, queryOptions).Cast<Object>();
return _list;
}
我正在使用扩展选项的ODate Query形式:
http://localhost:5125/api2/product?CategoryID=-1&$skip=9&$top=1&$expand=tbDefine_Category
我希望在我的ApplyQuery方法中将base.ApplyQuery结果转换为某种形式的列表然后迭代它进行一些修改但我不知道如何...
/* IQueryable<MyExpandedType> _list = base.ApplyQuery(queryable, queryOptions).Cast<MyExpandedType>();
List<MyExpandedType> _list2 = _list.ToList<MyExpandedType>();
for (int i = 0; i < _list2.Count; i++)
{
some modification here
} */
我收到以下错误
无法投射类型&#39; SelectAllAndExpand`1 [EDMX.tbDefine_Products]&#39;输入&#39; EDMX.tbDefine_Products&#39;。
答案 0 :(得分:0)
我认为有一件事是您需要更正applyquery方法的签名。当它返回Iqueryable时,签名应该与我猜的相同。
public override IQueryable ApplyQuery。