c# - 获取 Azure Blob 存储中的最后一个 Blob

标签 c# winforms azure

我需要知道如何检索 Blob 存储中最后创建的 Blob。现在我使用 for 循环来执行此操作,但目录中大约有 50000 个 block blob。

如何有效地获取最后创建的 block blob?

我的代码如下:

string url = null;
foreach (var blobItem in subdir.ListBlobs())
{
    url = blobItem.Uri.ToString();
}
url += signature;
if (url != pictureBoxLiveViewer.ImageLocation)
{
    pictureBoxLiveViewer.ImageLocation = url;
}

这是每分钟滴答作响的计时器中的一个函数。所以这是低效的。

最佳答案

Blob 存储不支持查询功能,因此您需要自行实现。一个明显的选择是您当前执行此操作的方式,即列出 blob 并查找该列表中的最后一个 blob。

[大声思考]

您可以做的一件事是按时间倒序命名 blob(类似于表中的 PartitionKey 的方法)。所以你可以做的是使用这个逻辑命名你的 blob

var blobName = DateTime.MaxValue - DateTime.UtcNow

这样,当您列出 Blob 时,您将始终首先获得最新的 Blob。

另一种替代方法是将 blob 名称、创建日期和 blob URI 保存在表存储中。同样,您可能希望对 PartitionKey 使用与上面相同的逻辑。然后,您将查询表存储,从表中获取第一条记录,这将是您最近创建的 blob。

关于c# - 获取 Azure Blob 存储中的最后一个 Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14981788/

相关文章:

C# winForm 基础知识组合框

azure - 如何删除 Azure WebApp AppSetting WEBSITE_TIME_ZONE

c# - MongoDB C# 2.0 驱动程序 : How many MongoClients respectively Sockets per Web Application?

c# - key 存储提供程序不能设置多次(始终使用 Azure Function 进行加密)

c# - Razor View 如果句子不起作用

c# - Azure Graph 与 B2C AD

azure - 如何在 Azure Web 应用程序中为容器设置 dns 选项

c# - 反序列化需要类型转换?

c# - 在图片框、窗体上查找碰撞区域

.net - 在 WinForms 中使用自定义 WPF 控件