我有从ApiController继承的控制器。我在其顶部有EnableQuery属性以允许ODATA查询字符串。但是$ count不起作用。
例如: - ../products?$ count = true确实返回没有odataexception的数据,但不返回计数。任何建议
答案 0 :(得分:0)
您可以单独计数并将其与数据一起放入新词典中,并在控制器的方法中返回此词典。以下代码适用于OData查询中指定的所有内容(包括选择,展开和过滤)并返回数据和计数:
public class ProductsController : ApiController
{
public IHttpActionResult Get(ODataQueryOptions<Product> queryOptions)
{
IQueryable<Product> products = ... ///any IQueryable<Product>
var results = queryOptions.ApplyTo(products);
var dict = new Dictionary<string, object>();
if (Request.ODataProperties().TotalCount != null)
{
dict.Add("@odata.count", Request.ODataProperties().TotalCount);
}
dict.Add("value", results);
return Ok(dict);
}
}
但是,要以ASP.NET Web API文档推荐的方式使用ODATA,您需要使用ODataController而不是ApiController