在过滤(where子句)查询中使用.IncludeTotalCount()的OData查询

时间:2012-05-10 15:02:15

标签: wcf-data-services odata

假设我在Netflix OData端点上有以下查询:

Titles.Where(x=>x.AverageRating > 3.0)

有没有办法使用.IncludeTotalCount()来获取符合where子句的标题数量? (不是Titles资源中的项目总数。)

我查看了此处提供的代码:http://msdn.microsoft.com/en-us/library/ee474390.aspx

但它似乎不适用于where子句。

2 个答案:

答案 0 :(得分:6)

我试过这个并且它运作得很好:

DemoService ctx = new DemoService(new Uri("http://services.odata.org/OData/OData.svc/"));
var query = (DataServiceQuery<Product>)ctx.Products.IncludeTotalCount().Where(p => p.Rating < 4);
QueryOperationResponse<Product> response = (QueryOperationResponse<Product>)query.Execute();
Console.WriteLine(response.TotalCount);
foreach (var i in response)
{
    Console.WriteLine(i.Name + ", " + i.Rating.ToString());
}

在你的情况下,“它不起作用”是什么意思?

答案 1 :(得分:2)

基于@Vitek Karas的回复和您的评论,看起来您需要将从where子句返回的IQueryable转换为DataServiceQuery。