C# 如何在不枚举整个容器的情况下按名称后缀查找Azure存储Blob?

C# 如何在不枚举整个容器的情况下按名称后缀查找Azure存储Blob?,c#,azure,azure-storage,azure-storage-blobs,C#,Azure,Azure Storage,Azure Storage Blobs,Azure虚拟目录中有大量Blob: VirtualDirectory1/file1 VirtualDirectory1/file2 ... VirtualDirectory1/fileN ... VirtualDirectoryK/file1 VirtualDirectoryK/file2 ... VirtualDirectoryK/fileM 我需要一种快速的方法来查找以某个后缀结尾的所有blob(例如“file1”)。 对于前缀,有一种方法可以只获取以某个名称开头的blob: blobC

Azure虚拟目录中有大量Blob:

VirtualDirectory1/file1
VirtualDirectory1/file2
...
VirtualDirectory1/fileN
...
VirtualDirectoryK/file1
VirtualDirectoryK/file2
...
VirtualDirectoryK/fileM
我需要一种快速的方法来查找以某个后缀结尾的所有blob(例如“file1”)。 对于前缀,有一种方法可以只获取以某个名称开头的blob:

blobContainer.ListBlobs(prefix: "prefixHere")
以下方法获取具有特定后缀的blob,结果是获取完整容器,并在客户端进行过滤

var blobsFound =
    blobContainer
    .ListBlobs(useFlatBlobListing: true)
    .OfType<ICloudBlob>()
    .Where(b => b.Name.EndsWith("file1"))
    .ToList();
var blobsFound=
水滴容器
.ListBlobs(useFlatBlobListing:true)
第()类
.Where(b=>b.Name.EndsWith(“文件1”))
.ToList();
使用Fiddler捕捉流量可以清楚地看到:

有没有一种方法可以通过Azure端的后缀查找所有blob,而不必向客户端获取完整的blob列表

有没有办法通过Azure端的后缀查找所有BLOB, 不向客户端获取完整的blob列表


不幸的是,没有。Blob服务只支持按Blob前缀过滤,而不支持按后缀过滤。您唯一的选择是列出blob,然后进行客户端筛选。

谢谢!你有没有找到快速找到斑点的方法?我看到了唯一的方法-扁平化容器并完全摆脱虚拟目录,然后使用前缀搜索…您可以以一种通过前缀检索变得更容易的方式存储它们。另一种复杂的方法是利用表存储来存储BLOBURL和其他相关信息,然后在表中进行搜索以获得BLOBURL。