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?