【发布时间】:2021-08-31 17:02:56
【问题描述】:
目前,我正在研究一种结构如下的存储:
AUTHORS
> A
> Adams
> Agustin
> Anderson
> B
> Boron
> Brandy
> C
> Carson
> Cruz
...and so on...
> Z
> Zeta
> Zimbabwe
> Zimbabwe Child Object 1
> Zimbabwe Child Object 2
我能够使用以下代码编写遍历所有 blob 的代码:
var blobClient = new BlobServiceClient("connection-string-to-storage");
var container = blobClient.GetBlobContainerClient("Authors");
var blobsToGet = container.GetBlobs();
但是,这段代码太贵了,因为如果我要寻找说“津巴布韦”,我必须遍历所有记录,直到它的子项,不管它有多深。
我尝试了以下方法,但显然也太贵了:
var blobsToProcess = blobsToGet.Where(x => x.Name.StartsWith("Zimbabwe"));
或者,我只是使用了这些:
var cloudContainer = new CloudBlobContainer(new Uri("absolute-storage-uri-with-sas"));
var cloudDirectory = cloudContainer.GetDirectoryReference("Authors");
我能够获得具有“StorageUri.PrimaryUri”属性的 Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory 对象的集合。
[问题] 如果只有“津巴布韦”的主 URI,我将如何获取津巴布韦子对象列表
我尝试了第一个代码,但我被困在这个:
var blobClient = new BlobServiceClient("storageuri-to-zimbabwe");
// I just wanted to get the list of blobs under this storage
var container = blobClient.GetBlobContainerClient(???);
var blobsToGet = container.GetBlobs();
【问题讨论】:
-
2 个问题:1) 您的 blob 容器的名称是“作者”。正确的?和 2) 你的 URL 是否看起来像
https://account.blob.core.windows.net/authors/Z/Zimbabwe并且你想获取它下面的所有子项?对吗? -
是的,在这两个问题上。
标签: c# azure azure-blob-storage