关于c#:查询表达式是无效的cosmosdb

Query expression is invalid cosmosdb

我尝试在cosmossdb中使用groupby进行以下查询,

1
2
3
var result = client.CreateDocumentQuery<Login>(documentUri)
                  .Where(i => i.logevent =="Success" && i._ts > 1517405472 && i._ts <= 1518010272)
                  .GroupBy(t => t._ts);

它抛出以下错误

DocumentQueryException: Query expression is invalid, expression
https://documents.azure.com/dbs/colls/test.Where(i => (((i.logevent ==
"Success") AndAlso (i._ts > 1517405472)) AndAlso (i._ts <= 1518010272))).GroupBy(t => t._ts) is unsupported. Supported
expressions are 'Queryable.Where', 'Queryable.Select' &
'Queryable.SelectMany


cosmos db linq提供程序当前不支持groupby。您必须使用asenumerable实现WHERE子句的结果,然后对对象使用LINQ执行Group。

1
2
3
4
var result = client.CreateDocumentQuery<Login>(documentUri)
         .Where(i => i.logevent =="Success" && i._ts > 1517405472 && i._ts <= 1518010272)
         .AsEnumerable()
         .GroupBy(t => t._ts);

注意:您应该将尽可能多的查询谓词下推到服务器。换言之,WHERE子句应该在不可数的前面。