2016-12-22 4 views
1

Я использую odata с веб-API в структуре сервиса. Я хотел бы сделать некоторые для фильтрации с использованием параметра в URL-адресе, прежде чем возвращать IQuerable. Вероятно, это означает, что Я смешении API маршрутизации с OData маршрутизации не-рабочий пример, просто чтобы дать представление о том, что я пытаюсь достичь:.?Предварительная фильтрация OData с использованием URL-парама (

[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(); 
}