棘手的部分是RowKey
是string
,其值(value)类似于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);
最佳答案
Azure Table Service不支持Order By
功能,因此对于您而言,当前仅安装选项是下载所有实体并在客户端按时间顺序对它们进行排序。当表中的实体数量变多时,这显然不是最佳解决方案。
其他选项(这将要求您重新设计应用程序)将以反向刻度转换日期/时间值:
var rowKey = (DateTime.MaxValue.Ticks - DateTimeValueForRowKey.Ticks).ToString("d19")
这将确保将最新条目添加到表的顶部,而不是表的底部。要获取最新条目,您只需要从表中获取第一个实体。
关于c# - 如何在Azure表存储中使用RowKey或时间戳检索最新记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40593939/