使用Azure移动服务获取由系统属性“CreatedAt”过滤的数据

时间:2014-11-05 04:58:46

标签: azure-mobile-services

我在我的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

感谢任何帮助。

1 个答案:

答案 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();