在旧的 SDK Azure 表中,您可以创建 FilterConditions,如下所示
var partitionFilter = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, symbolRoot);
var startDateFilter =
TableQuery.GenerateFilterConditionForDate("TradeDate", QueryComparisons.GreaterThanOrEqual, startDate);
var endDateFilter =
TableQuery.GenerateFilterConditionForDate("TradeDate", QueryComparisons.LessThanOrEqual, endDate);
var filter = TableQuery.CombineFilters(
TableQuery.CombineFilters(
partitionFilter,
TableOperators.And,
startDateFilter),
TableOperators.And, endDateFilter);
我希望能够继续这种模式,但是......
在新的 Azure.Data.Tables SDK 中发生了很多变化 我看不到创建过滤器的方法,即使 QueryAsync 方法接受过滤器作为参数。
此方法失败,因为过滤中显然不支持 DateTime 转换
public async Task<List<EquityDataEntity>> GetEquityPriceDataXDaysBackAsync(string symbol, int daysBackFromToday)
{
if (daysBackFromToday > 0)
{
daysBackFromToday *= -1; // put it proper form for Add... method
}
var data = await TableClient!
.QueryAsync<EquityDataEntity>(u => u.PartitionKey == symbol.ToUpper()
&& Convert.ToDateTime(u.RowKey) >= DateTime.Now.AddDays(daysBackFromToday))
//Yes, unfortunately the RowKey is the date
.ToListAsync();
return data;
}
“不支持 ToDateTime 方法。”
我的两个问题是:
有没有一种方法可以像之前的 SDK 那样在方法之外生成过滤器以在方法内使用?
如果上述方法不可行,我如何在查询方法中完成日期比较?