列出蔚蓝容器中所有斑点的uri

时间:2018-08-10 22:09:24

标签: c# .net azure azure-storage azure-storage-blobs

我知道我们可以使用以下内容获取Azure存储容器中的blob列表:

var list = fileContainer.ListBlobs(useFlatBlobListing: true);
List<string> blobNames = list.OfType<CloudBlockBlob>().Select(b => b.Name).ToList();

然后如何获取所有斑点的uri列表?

我尝试了以下操作,但失败的原因是错误:

List<string> blobNamesUri = list.OfType<CloudBlockBlob>().Select(b => b.Name.Uri.ToString()).ToList();

2 个答案:

答案 0 :(得分:1)

问题位于b.Name.Uri.ToString(),Uri是CloudBlockBlob的属性,而不是Name。您应该像这样b.Uri.ToString()删除名称。您的参数名称blobNamesUri可能会影响您。

答案 1 :(得分:0)

我为您编写了一个演示,您可以直接使用它。

您在这里:

    public static List<V> listAllBlobs<T,V>(Expression<Func<T, V>> expression, string containerName)
    {
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=xxxx;AccountKey=xxxxx;BlobEndpoint=https://xxxxx.blob.core.windows.net/;QueueEndpoint=https://xxxxx.queue.core.windows.net/;TableEndpoint=https://xxxxxx.table.core.windows.net/;FileEndpoint=https://xxxxx.file.core.windows.net/;");

        CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();

        CloudBlobContainer container = cloudBlobClient.GetContainerReference(containerName);
        container.CreateIfNotExists();
        var list = container.ListBlobs(useFlatBlobListing: true);

        List<V> data = list.OfType<T>().Select(expression.Compile()).ToList();
        return data;
    }

用法和屏幕截图:

enter image description here