使用OData和LINQ获取链接集合的计数

Lar*_*ier 3 linq linqpad odata

我为Stack Overflow设置了OData feed,如精彩文章中所述,使用LINQPad查询堆栈溢出,我想做类似的事情:

Users.Where(x=>x.Badges.Count==0).Take(5)
Run Code Online (Sandbox Code Playgroud)

获得没有徽章的用户(" 徽章?我们不需要没有stinkin徽章! ").我得到一个DataServiceQueryException: 错误快照

Joe*_*ari 8

不幸的是,OData不支持聚合函数 - 它仅支持此处描述的有限的查询函数集.

聚合运算符

所有聚合操作都不支持DataServiceQuery,包括以下内容:

Aggregate

Average

Count

LongCount

Max

Min

Sum
Run Code Online (Sandbox Code Playgroud)

聚合操作必须在客户端上执行或由服务操作封装.

希望微软将来能够增强OData客户端 - 看起来(看似)拥有LINQ的所有功能然后无法使用它是令人沮丧的.

  • OData 现在支持聚合函数:http://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/odata-data-aggregation-ext-v4.0.html (2认同)