There is a way to override the queryOption that you get on the server side.
public IHttpActionResult Get(ODataQueryOptions<People> queryOptions)
{
HttpRequestMessage originalRequest = queryOptions.Request;
string url = originalRequest.RequestUri.AbsoluteUri;
if (queryOptions.Filter != null)
{
url = url.Replace("$filter=", "$filter=organisationUnitId%20eq%20" + organisationUnitId + ",");
}
else
{
if (url.Contains("$"))
{
url += "&";
}
url += "$filter=organisationUnitId%20eq%20" + organisationUnitId;
}
HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Get, url);
queryOptions = new ODataQueryOptions(queryOptions.Context, req);
var result = queryOptions.ApplyTo(_db.Prople);
return Ok(result, result.GetType());
}
private IHttpActionResult Ok(object content, Type type)
{
var resultType = typeof(OkNegotiatedContentResult<>).MakeGenericType(type);
return Activator.CreateInstance(resultType, content, this) as IHttpActionResult;
}
source
share