![](/img/trans.png)
[英]ASP.NET Web API OData V4 Service Returning HTTP 404 ($top)
[英]How can I enable sorting for OData service returning dynamic in asp.net mvc web api
這是我的控制器的代碼:
public class RegularGrigController : ApiController
{
// GET api/regulargrig
public IEnumerable<string> Get()
{
return EntityHelper.GetEntities().Select(t => t.ModelName());
}
public PageResult<dynamic> Get(string entityName, ODataQueryOptions options)
{
var query = EntityHelper.GetQueryable(entityName).Select("new (Id, SysName)"); // Dynamic queryable
IQueryable results = options.ApplyTo(query); // Exception here
return new PageResult<dynamic>(results as IEnumerable<dynamic>, Request.GetNextPageLink(), Request.GetInlineCount());
}
}
當我嘗試撥打此電話時/api/RegularGrig?entityName=SecurityPrincipal&$orderby=Id
我收到此例外
Type 'System.Object' does not have a property 'Id'
那么,有什么方法可以對動態數據進行排序/過濾?
該代碼現在對我有用:
public PageResult<dynamic> Get(string entityName)
{
var query = EntityHelper.GetQueryable(entityName).Select("new (Id, SysName)");
var modelBuilder = new ODataConventionModelBuilder();
modelBuilder.AddEntity(query.ElementType);
var model = modelBuilder.GetEdmModel();
var options = new ODataQueryOptions(new ODataQueryContext(model, query.ElementType), this.Request);
IQueryable results = options.ApplyTo(query);
return new PageResult<dynamic>(results as IEnumerable<dynamic>, Request.GetNextPageLink(), Request.GetInlineCount());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.