C# 按时间戳间隔从azure存储获取记录时出现的问题

C# 按时间戳间隔从azure存储获取记录时出现的问题,c#,asp.net,timestamp,azure-storage,C#,Asp.net,Timestamp,Azure Storage,我在按时间戳间隔从azure存储获取记录时遇到问题。这是我的问题 CloudStorageAccount storageAccount = CloudStorageAccount.Parse( CloudConfigurationManager.GetSetting("ConnectionString")); CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); CloudTable table = ta

我在按时间戳间隔从azure存储获取记录时遇到问题。这是我的问题

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("ConnectionString"));

CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference("TableName");

string fromDate = TableQuery.GenerateFilterConditionForDate("Timestamp", QueryComparisons.GreaterThanOrEqual, fromDateTime);
string toDate = TableQuery.GenerateFilterConditionForDate("Timestamp", QueryComparisons.LessThanOrEqual, toDateTime);
string anotherValue = TableQuery.GenerateFilterCondition("AnotherValue", QueryComparisons.Equal, "Value");
string timeCombine = TableQuery.CombineFilters(fromDate, TableOperators.And, toDate);

TableQuery<StorageSPS> query = new TableQuery<StorageSPS>().Where(TableQuery.CombineFilters(anotherValue, TableOperators.And, timeCombine));
var data = (await (table.ExecuteQuerySegmentedAsync(query, new TableContinuationToken(), System.Threading.CancellationToken.None))).Results;
CloudStorageAccount-storageAccount=CloudStorageAccount.Parse(
GetSetting(“ConnectionString”);
CloudTableClient tableClient=storageAccount.CreateCloudTableClient();
CloudTable=tableClient.GetTableReference(“TableName”);
字符串fromDate=TableQuery.GenerateFilterConditionForDate(“时间戳”,QueryComparisons.GreaterThanOrEqual,fromDateTime);
string toDate=TableQuery.GenerateFilterConditionForDate(“时间戳”,QueryComparisons.lessthanRequal,toDateTime);
string anotherValue=TableQuery.GenerateFilterCondition(“anotherValue”,QueryComparisons.Equal,“Value”);
string timeCombine=TableQuery.CombineFilters(fromDate、TableOperators.And、toDate);
TableQuery query=new TableQuery()。其中(TableQuery.CombineFilters(另一个值,TableOperators.And,timeCombine));
var data=(wait(table.ExecuteQuerySegmentedAsync(query,new-TableContinuationToken(),System.Threading.CancellationToken.None)).Results;
执行查询后,我没有得到任何记录。有什么我做错了吗。有人能告诉我我做错了什么吗

非常感谢您的帮助。

返回的任务,其中包含此调用的结果和用于查询下一组结果的。根据设计,单个ExecuteQuerySegmentedAsync调用可以返回0个实体(请参阅),但客户端可以使用提供的延续令牌再次调用它。比如,

int count = 0;
do
{
    TableQuerySegment<DynamicTableEntity> querySegment =
        await currentTable.ExecuteQuerySegmentedAsync(query, token);
    token = querySegment.ContinuationToken;

    foreach (DynamicTableEntity entity in querySegment)
    {
        ++count;
    }
}
while (token != null);
int count=0;
做
{
表查询段查询段=
等待currentTable.ExecuteQuerySegmentedAsync(查询,令牌);
token=querySegment.ContinuationToken;
foreach(querySegment中的DynamicTableEntity)
{
++计数;
}
}
while(令牌!=null);

正如Serdar在另一条评论中所说,返回的分段结果可能为空,您需要使用返回的ContinuationToken再次发出查询请求,直到返回的ContinuationToken为空

我想提到的另一件事是,如果可能,请避免时间戳间隔查询。这样的查询将导致服务器端的整个表扫描。如果在您的场景中通常需要时间戳间隔查询,请考虑选择时间戳作为分区键或行键来优化查询性能。 有关表分区键和行键的设计,请参阅以下文章:


谢谢你的帮助。它真的帮助了我。虽然很慢。我知道这是因为没有序列化。我会想,我能做什么,比现在更快地获取数据。无论如何,再次谢谢你,朋友。