首页 文章

查询表达式是无效的cosmosdb

提问于
浏览
0

我试图使用以下查询在cosmosdb中使用groupby进行查询,

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

它会引发以下错误

DocumentQueryException:查询表达式无效,表达式https://documents.azure.com/dbs/colls/test.Where(i =>(((i.logevent ==“Success”)AndAlso(i._ts> 1517405472) )AndAlso(i._ts <= 1518010272))) . GroupBy(t => t._ts)不受支持 . 支持的表达式是'Queryable.Where','Queryable.Select'和'Queryable.SelectMany

1 回答

  • 2

    Cosmos DB LINQ提供程序目前不支持GroupBy . 您必须使用AsEnumerable实现where子句的结果,然后使用对象上的LINQ执行Group By .

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

    Note: 您应该尽可能多地将查询谓词下推到服务器 . 换句话说,Where子句应该在AsEnumerable前面 .

相关问题