我在我的MVC项目中使用Azure移动服务。我想获取由CreatedAt
过滤的记录(这是一个Azure表系统属性)
以下是我正在使用的代码:
IMobileServiceTable<QuestionItem> bussinessQuestionItemTable =
CustomDeclaration.MobileService.GetTable<QuestionItem>();
queryToPass = "$filter=__createdAt ge datetime'2014-10-25T04:06:27Z'";
var coll = await bussinessQuestionItemTable.ReadAsync(queryToPass);
它始终使用StatusCode:400
抛出异常The request could not be completed. (Bad Request)
我使用我们创建的DateTime
字段尝试了相同的查询,但它运行正常,但始终失败并显示CreatedAt
感谢任何帮助。
答案 0 :(得分:2)
在.NET后端,CreatedAt
列的类型为DateTimeOffset
,而不是DateTime
。因此,要根据该属性进行查询,您需要在查询中使用相应的文字:
IMobileServiceTable<QuestionItem> bussinessQuestionItemTable =
CustomDeclaration.MobileService.GetTable<QuestionItem>();
queryToPass = "$filter=__createdAt ge datetimeoffset'2014-10-25T04:06:27Z'";
var coll = await bussinessQuestionItemTable.ReadAsync(queryToPass);
请注意,如果类型QuestionItem
的属性标记为[CreatedAt](或[JsonProperty(&#34; __ createdAt&#34;)] 类型为DateTimeOffset ,那么您可以也使用linq查询:
IMobileServiceTable<QuestionItem> bussinessQuestionItemTable =
CustomDeclaration.MobileService.GetTable<QuestionItem>();
var coll = await bussinessQuestionItemTable
.Where(q => q.CreatedAt >= new DateTimeOffset(2014, 10, 25, 4:, 6, 27, TimeSpan.Zero))
.ToListAsync();