如何获取在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);