Tom*_*uby 6 linq azure-cosmosdb
围绕 CosmosDB .NET SDK,我发现了一个有趣的问题。我想对以下查询使用 SDK LINQ 支持:
SELECT VALUE COUNT(1) FROM c WHERE <predicate>
Run Code Online (Sandbox Code Playgroud)
好吧,在编写 LINQ 查询之后,我立即意识到可能无法处理诸如文档查询之类的查询。但是,由于文档查询允许您捕获查询指标并在结果页面之间解除阻塞线程,因此我非常喜欢它。这是代码:
client.CreateDocumentQuery<TEntity>.Where(<predicate>).Count()
Run Code Online (Sandbox Code Playgroud)
即使我知道 Count() 的结果类型不是 IQueryable,有没有办法将“计数”查询作为文档查询处理?
当然,有一种方法可以做到这一点。
CountAsyncSDK 中内置了一个扩展。
当您准备好计数时,只需构建IQueryable并使用.CountAsync()即可。
但是请记住,由于结果是在 SDK 中聚合的,因此不会有任何指标收集。
如果您确实需要指标,那么您可以使用通常DocumentQuery从 SQL 创建的而不是 LINQ 和 while.HasMoreResults,ExecuteNextAsync逻辑并从每次迭代的分页结果中捕获指标。
| 归档时间: |
|
| 查看次数: |
452 次 |
| 最近记录: |