4

我正在研究新的 ASP.NET Web API 作为报告工具。

在 SQL 中,我会这样做:

WHERE order_date 
    BETWEEN to_date ('2003/01/01', 'yyyy/mm/dd') 
    AND to_date ('2003/12/31', 'yyyy/mm/dd');

...这些类型的命令如何在 ODATA 协议 URL 中转换?

4

3 回答 3

13

随着Visual Studio 2012.2更新,OData 支持又回来了,以下 url 可用于过滤日期:

http://host/api/controller?$filter=order_date+gt+datetime'2003-01-01'+and+order_date+lt+datetime'2003-12-31'

如果要包含时间,则应以ISO 8601格式指定日期。

于 2013-05-29T09:03:08.793 回答
2

使用 WCF 数据服务客户端 API,您将能够使用 LINQ 子句表达日期约束,例如 context.Orders.Where(o => o.OrderDate < DateTime.Now && o.OrderDate > DateTime.Now.AddDays( -7))。在从该 LINQ 查询生成的 URL 中,您将看到查询参数,例如$filter 选项,例如http://services.odata.org/(S(readwrite))/OData/OData.svc/Products( )?$filter=(ReleaseDate lt datetime'2012-06-19T08:16:01.4283521-07:00') 和 (ReleaseDate gt datetime'2012-06-26T08:16:01.4293524-07:00')。如果您熟悉 LINQ,LINQPad是查看这些 URL 外观的好方法

于 2012-06-19T15:18:25.867 回答
0

ASP.NET Web API 中的 OData 支持已经消失,QueryableAttributeRTM 将不再支持(至少目前看起来是这样)。

查看此提交:删除 QueryAttribute 和相关的查询组合功能

他们还将这一行添加为提交消息:

我们计划提供更好的 OData 支持,作为基于 OData 库的单独功能。

不是您问题的完整答案,但希望对您有所帮助。

于 2012-06-20T12:41:13.147 回答