DocumentDB .Net客户端库LINQ聚合错误

时间:2017-03-19 02:59:12

标签: c# linq azure-cosmosdb

我刚刚开始使用DocumentDB,并希望尝试最近添加的聚合功能。但是,当我尝试使用它们时,我得到以下异常: Query expression is invalid, expression return type System.Int32 is unsupported. Query must evaluate to IEnumerable.

我已经有了一个DocumentClient对象,名为client

var collectionUri = UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId);
var options = new FeedOptions {MaxItemCount = -1, EnableCrossPartitionQuery = true};

var count = client.CreateDocumentQuery<LogEvent>(collectionUri, options)
    .Where(f => f.Player == "SomePlayer")
    .Count();

我正在攻击本地模拟器。该集合中有四个文档。

这是当前在本地模拟器中无法使用的东西吗?或者我做错了什么?

1 个答案:

答案 0 :(得分:1)

根据您的代码,我针对我的Azure DocumentDB(而不是本地模拟器)测试了它,然后我可能遇到与您提供的相同的错误:

enter image description here

正如Aravind Ramachandran提到的那个版本,然后我检查了我安装的版本,发现它是Microsoft.Azure.DocumentDB 1.11.4。将版本更新到1.12.1或更高版本后,我可以检索预期的结果。

以下是Azure DocumentDB for .NET的release notes

  

1.12.1中的更改​​

     

为聚合查询添加了LINQ支持(COUNT,MIN,MAX,SUM和AVG)。