How to get all rows in Azure table Storage in C#?

azure, azure-table-storage, azure-tablequery, c#, nosql

Solution

To answer your question, you could do something like the following:

var acc = new CloudStorageAccount(
                         new StorageCredentials("account name", "account key"), true);
var tableClient = acc.CreateCloudTableClient();
var table = tableClient.GetTableReference("table name");
var entities = table.ExecuteQuery(new TableQuery<MyEntity>()).ToList();

However please keep in mind that table service returns a maximum of 1000 entities in a single call to it. If there're more than 1000 entities available in your table, it returns a `continuation token` which can be used to fetch next set of entities. The `ExecuteQuery` method actually handles this continuation token internally thus if you want to cancel this operation for any reason, you can't do that.

A better approach would be to use `ExecuteQuerySegmented` method and have your application deal with the token. Here's the sample code to do so:

var acc = new CloudStorageAccount(
                         new StorageCredentials("account name", "account key"), true);
var tableClient = acc.CreateCloudTableClient();
var table = tableClient.GetTableReference("table name");
TableContinuationToken token = null;
var entities = new List<MyEntity>();
do
{
    var queryResult = table.ExecuteQuerySegmented(new TableQuery<MyEntity>(), token);
    entities.AddRange(queryResult.Results);
    token = queryResult.ContinuationToken;
} while (token != null);

Problem

I am trying to get a list of all entities inside an azure table. Any idea of how I would write this query?

Original source