Table Storage は Count できないよ

タイトルのとおりで Table Storage は件数を取得するための API が無い。愚直に全件取得するしかない。 せめてレスポンスを軽くするための手段として、 PartitionKey だけを Select するという手段がある。

var query = new TableQuery<DynamicTableEntity>()
    .Select(new string[] { "PartitionKey" });
var count = table.ExecuteQuery(query).Results.Count;

ただし単発のクエリは最大1000件までしか返ってこないので、セグメント化する必要がある。

var count = 0;
var query = new TableQuery<DynamicTableEntity>()
    .Select(new string[] { "PartitionKey" });
TableContinuationToken token = null;
do
{
    var queryResult = table.ExecuteQuerySegmented(query, token);
    count += queryResult.Results.Count;
    token = queryResult.ContinuationToken;
} while (token != null);

しょっちゅう Count するべきものじゃないんだろうな。