我是Azure表存储的新手。我想获得表中的总行数。
目前,我正在做这样的事情:
public List<T> ReadAll(string partitionKey)
{
List<T> entities = new List<T>();
TableQuery<T> query = new TableQuery<T>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey.ToLower()));
entities = Table.ExecuteQuery(query).ToList();
return entities;
}
当前,这将读取所有表条目。涉及较少的记录时,这可以正常工作。但是我担心什么时候记录会增加,这种方法会很乏味。
还有其他优雅的方法吗?
不幸的是,没有其他方法可以做到这一点。您可能要做的一件事就是仅使用查询投影仅获取少量属性。这将减少响应负载,从而在某种程度上加快操作速度。
详细说明我的答案,到目前为止,获取实体总数的唯一方法是获取所有实体。上面的代码获取实体并不是必需的所有属性,因为您只对获取实体数感兴趣。这就是为什么我说您仅获取PartitionKey, RowKey, and Timestamp
属性的原因。要仅获取属性的子集,可以使用query projection
并指定要获取的属性的列表(PartitionKey, RowKey, and Timestamp
在我们的示例中)。为此,只需将查询修改为:
TableQuery<T> query = new TableQuery<T>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey.ToLower())).Select(new List<string> {"PartitionKey", "RowKey", "Timestamp"});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句