在Cosmos DB v3中,我使用IOrderedQueryable<T>
得到了GetItemLinqQueryable<T>
。这使我可以编写自定义查询。问题是,无论何时实现查询,我都希望跟踪请求费用。如何做到这一点?
当我执行ReadItemAsync
和ExecuteStoredProcedureAsync
之类的方法时,返回的对象具有RequestCharge
属性,但是我需要使用linq查询来检测费用。
答案 0 :(得分:2)
您可以在ToFeedIterator
上使用扩展方法IOrderedQueryable
。
using Microsoft.Azure.Cosmos.Linq;
var query = container.GetItemLinqQueryable<MyClass>()
.Where(c => true)
.ToFeedIterator();
while (query.HasMoreResults)
{
var response = await query.ReadNextAsync();
Console.WriteLine(response.RequestCharge);
foreach (var myClassInstance in response)
{
// do stuff
}
}
编辑:如果需要计数或任何聚合函数:
var query = container.GetItemLinqQueryable<MyClass>()
.Where(c => true);
Response<int> x = await query.CountAsync();
Console.WriteLine(x.RequestCharge);
int count = x; // Autoboxing
您可以在GitHub上找到可用扩展功能的完整列表。