对Azure表服务的LINQ查询失败
本文关键字:LINQ 查询 失败 服务 Azure | 更新日期: 2023-09-27 17:53:16
我有一些记录保存在我的Azure表存储。我正试图从表中提取记录,仅为特定的日期/日期,为当前登录的用户。
我的查询没有返回任何东西,所以我的列表总是空的,即使我知道这个月在我的表中有3条记录。
我不确定为什么在这种情况下查询失败。如何提取特定日期、特定用户的记录?任何帮助吗?
这是我到目前为止所尝试的:
public async Task<Result<List<Alert>>> FetchAlertsForDate (DateTime date)
{
try {
var fromDate = new DateTime(date.Year,date.Month,date.Day,0,0,0); //lets create a 12:00:00 AM date
var toDate = new DateTime(date.Year,date.Month,date.Day,23,59,59); //lets create a 23:59:59PM date
var alertTable=client.GetSyncTable<Alert>();
var alerts = await alertTable.Where(n=>n.AccountId==client.CurrentUser.UserId).Where(n=> n.StartDate >= fromDate && n.StartDate <= toDate).ToListAsync();
return Result<List<Alert>>.Success(alerts);
} catch (Exception ex) {
return Result<List<Alert>>.Failure (ex.Message + ex.StackTrace);
}
}
您编写的代码没有明显的错误来回答您的问题
如何为特定的用户提取特定日期的记录?
比起在方法中使用日期范围,您可以像这样比较dateTime的日期部分;
var alerts = await alertTable.Where(n=>n.AccountId==client.CurrentUser.UserId).Where(n=> n.StartDate.Date == date.Date).ToListAsync();
我认为你也可以去掉第二个where从句;
var alerts = await alertTable.Where(n=>n.AccountId==client.CurrentUser.UserId && n.StartDate.Date == date.Date).ToListAsync();
如果你没有得到任何记录,那么对于userId和Date的特定组合,那么最有可能的事情是没有任何记录与那个确切的组合。
由于某种原因,相同的查询最终成功了。我通过删除第一部分来改进它,在那里我检查当前用户的id。这是不必要的,因为在我的情况下。
所以最后的查询是这样的:
var alerts = await alertTable.Where(n=> n.StartDate >= fromDate && n.StartDate <= toDate).ToListAsync();
现在,这将调出所有登录用户的详细信息。