如何在 Azure 表中仅检索预定义数量的结果

How to retrieve only a predefined number of results in Azure Tables

我正在尝试执行 azure table 查询。 我的 table(保存日志)有数千行数据,并且每秒填充更多数据。

目前我只有1个partition key,但不影响下一道题

我怎样才能取回让我们只说 100 个最新结果。

这是我的实体:

    public MainServerLogEntity(string Message)
    {
        this.PartitionKey = "mainserverlogs";
        this.RowKey = (DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks).ToString();
        this.Message = Message;
        this.Date = DateTime.UtcNow;
    }

    public MainServerLogEntity() { }

    public string Message { get; set; }
    public DateTime Date { get; set; }

现在这是我在网络中执行的查询 api 我有:

    [Route("MainServerLogs")]
    [HttpGet]
    public IEnumerable<MainServerLogEntity> GetMainServerLogs()
    {
        CloudTable table = AzureStorageHelpers.GetWebApiTable(connectionString, "mainserverlogs");
        TableQuery<MainServerLogEntity> query = new TableQuery<MainServerLogEntity>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "mainserverlogs"));

        return table.ExecuteQuery(query);
    }

但问题是我得到了很多数据,我每隔几秒就请求这个 api 以更新 ui。

我该怎么办?是否可以在查询中定义我只需要前 100 行? 如果不可能,那么我应该使用什么其他技术?

尝试像这样在查询上实现 .Take(100):

[Route("MainServerLogs")]
[HttpGet]
public IEnumerable<MainServerLogEntity> GetMainServerLogs()
{
    CloudTable table = AzureStorageHelpers.GetWebApiTable(connectionString, "mainserverlogs");
    TableQuery<MainServerLogEntity> query = new TableQuery<MainServerLogEntity>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "mainserverlogs")).Take(100);

    return table.ExecuteQuery(query);
}