gpt4 book ai didi

c# - 如何在Azure表存储中使用RowKey或时间戳检索最新记录

转载 作者:可可西里 更新时间:2023-11-01 08:33:52 25 4
gpt4 key购买 nike

棘手的部分是RowKey字符串,其值类似于Mon Nov 14 12:26:42 2016

我尝试使用 Timestamp 进行查询,例如

var lowerlimit = DateTime.UtcNow; // its should be nearer to table timestamp data.
TableQuery<TemperatureEntity> query2 = new TableQuery<TemperatureEntity>().Where(TableQuery.GenerateFilterConditionForDate("Timestamp", QueryComparisons.GreaterThanOrEqual,lowerlimit));
var test = table.ExecuteQuery(query2);

MyEntity.cs

  public class MyEntity : TableEntity
{
public MyEntity(string partitionKey, string rowKey)
{
this.PartitionKey = partitionKey;
this.RowKey = rowKey;
}

public MyEntity() { }

public Int64 DevideId { get; set; }

public string RowKey { get; set; }
}

//下面的查询给出了完整的数据Program.cs

// Retrieve the storage account from the connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create the table client.
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();

// Create the CloudTable object that represents the "TemperatureData" table.
CloudTable table = tableClient.GetTableReference("TemperatureData");

// retrive data
TableQuery<TemperatureEntity> query = new TableQuery<TemperatureEntity>();
var data = table.ExecuteQuery(query);

enter image description here

最佳答案

新,

如果您需要在分区中拥有最新条目,那么使用字符串日期时间作为行键并不是一个好方法,因为表存储根据行键按升序存储实体。

如果在当前点您可以更改行键的值,请使用DateTime.UtcNow.Ticks:

var invertedTimeKey = DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks

通过这种方法,在查询表时,您将能够获取与最新对应的 1 个条目。

如果您无法更改行键的值,则必须检索分区中的所有条目,这意味着将所有条目加载到内存中,然后使用时间戳对它们进行排序以检索最后一个条目。如果您有很多条目,这绝对不是一个好方法。

var lastResult = results.OrderByDescending(r => r.Timestamp).FirstOrDefault();

关于c# - 如何在Azure表存储中使用RowKey或时间戳检索最新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40593939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com