2016-12-22 4 views
1

サービスファブリック上のWeb APIでodataを使用しています) IQuerableを返す前にURLのパラメータを使用してフィルタリングを行いたいと思います。私はODATAルーティングとルーティングAPIを混合してい-動作していない例が、ちょうど私が達成しようとしているかのアイデアを与える:。URLパラメータを使用してODataを事前フィルタリングしています(

[ResponseType(typeof(IQuerable<Something>))] 
[HttpGet, Route("Something/{id:guid}/SomeFiltrableList")] 
public async Task<IHttpActionResult> GetBySomethingId(Guid id) 
{ 
    var someFiltrableList= await _repository.GetSomething(id); 

    return Ok(someFiltrableList.AsQueryable()); 
} 

このような何かをすることは可能だろうか? ? ありがとう

答えて

2

System.Web.OData.Query.ODataQueryOptionsパラメータを追加し、データソースに適用します。

[ResponseType(typeof(IQueryable<Something>))] 
[System.Web.Http.HttpGet, System.Web.Http.Route("Something/{id:guid}/SomeFiltrableList")] 
public async Task<IQueryable<Something>> Get(Guid id, ODataQueryOptions options) 
{ 
    var someFiltrableList = await _repository.GetSomething(id); 

    return options 
       .ApplyTo(someFiltrableList) 
       .Cast<Something>() 
       .AsQueryable(); 
} 
関連する問題