C# $INLINECUNT未使用ApplyTo在ApiController上工作

C# $INLINECUNT未使用ApplyTo在ApiController上工作,c#,odata,asp.net-web-api,asp.net-web-api2,C#,Odata,Asp.net Web Api,Asp.net Web Api2,我试图在标准Web API 2.2ApicController中使用OData过滤和分页功能。为此,我必须重写请求URL以符合ODataV4标准。我的控制器如下所示: public GridPage Get([FromUri] GridSearchCriteria criteria) { Request.RequestUri = ... // convert querystring to OData v4 var context = new ODataQueryContext(M

我试图在标准Web API 2.2
ApicController
中使用OData过滤和分页功能。为此,我必须重写请求URL以符合ODataV4标准。我的控制器如下所示:

public GridPage Get([FromUri] GridSearchCriteria criteria)
{
    Request.RequestUri = ... // convert querystring to OData v4
    var context = new ODataQueryContext(MyEdmModel.Instance, typeof(Delivery), null);
    ODataQueryOptions<Delivery> options = new ODataQueryOptions<Delivery>(context, Request);

    IQueryable<Delivery> deliveries = ... // use EF to load deliveries from DB
    var result = (IQueryable<Delivery>)options.ApplyTo(deliveries); // BTW, I wonder why there is no generic overload of ApplyTo?

    // fill and return a GridPage
    ...
}
不幸的是,
totalCount
无论我尝试什么,都始终保持为空。我还尝试使用:

object totalCount;
Request.Properties.TryGetValue("System.Web.OData.TotalCount", out totalCount);
但是没有运气。查看
请求
属性可以发现
System.Web.OData.properties
下有一个条目,但其所有属性都未初始化(
Model
为null,
NextLink
为null,
TotalCount
为null,等等)


有人知道为什么这不起作用吗?顺便说一句,我使用的是
Microsoft.AspNet.OData
v5.6。

我必须指定
$count=true
而不是
$inlinecount=allpages
。据我所知,这是一个突破性的变化。

我必须指定
$count=true
而不是
$inlinecount=allpages
。据了解,这是一个突破性的变化。

这也适用于ODataController。这是如此糟糕的记录-谢谢!谢谢当我迁移到4.0时,这帮助了我进行了其他规范更改:这是针对OData V4的,它的inlinecount被替换为count,而不是2或3,我在ApicController上有相同的问题,inlinecount=allpages不起作用,brign normal Result这在ODataController上也起作用。这是如此糟糕的记录-谢谢!谢谢当我迁移到4.0时,这有助于我进行其他规范更改:这是针对OData V4的,它的inlinecount被替换为count,而不是2或3,我在ApiController上有相同的问题,inlinecount=allpages不起作用,brign正常结果
object totalCount;
Request.Properties.TryGetValue("System.Web.OData.TotalCount", out totalCount);