如何获取在Azure存储帐户中创建的所有现有表?

你以前是这样做的

CloudTableClient tableClient;
IEnumerable<CloudTable> AllTables = tableClient.ListTables();


但是,似乎无法在ListTables实例上调用CloudTableClient方法。我正在使用Microsoft.WindowsAzure.Storage Version 9.3.0;


  编辑


这是用于.NET CORE

最佳答案

如果要查找.NET核心答案,请直接转到下面的EDIT段落


好吧,好像您没有在创建tableClient的实例

    CloudTableClient tableClient = new CloudTableClient("YOUR CONNECTION STRING");
    var AllTables = tableClient.ListTables();
    if(AllTables != null)
    {
        foreach (var table in AllTables)
        {
            // table.Name is your property
        }
    }


该方法在Microsoft文档上

https://docs.microsoft.com/en-us/dotnet/api/microsoft.windowsazure.storage.table.cloudtableclient.listtables?view=azure-dotnet#Microsoft_WindowsAzure_Storage_Table_CloudTableClient_ListTables_System_String_Microsoft_WindowsAzure_Storage_Table_TableRequestOptions_Microsoft_WindowsAzure_Storage_OperationContext_


  编辑


对此,OP刚刚表示他们正在使用.NET CORE

.NET Core尚未包含API的同步实现

ListTables没有方法,因此您必须使用ListTablesSegmentedAsync并将null作为continuationToken参数传递。这将一直循环直到获取所有表

https://docs.microsoft.com/en-us/dotnet/api/microsoft.windowsazure.storage.table.cloudtableclient.listtablessegmentedasync?view=azure-dotnet#Microsoft_WindowsAzure_Storage_Table_CloudTableClient_ListTablesSegmentedAsync_Microsoft_WindowsAzure_Storage_Table_TableContinuationToken_

更新示例代码

这是列出所有表的伪代码

CloudTableClient tableClient = new CloudTableClient("YOUR CONNECTION STRING");
TableContinuationToken continuationToken = null;
var allTables = new List<CloudTable>();
do
{
  var listingResult = await tableClient.ListTablesSegmentedAsync(continuationToken);
  var tables = listingResult.Result.ToList();
  var continuationToken = listingResult.ContinuationToken;
  //Add the tables to your allTables
}
while (continuationToken != null);

10-06 05:45