我正在研究新的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中翻译?
答案 0 :(得分:12)
通过Visual Studio 2012.2更新,OData支持返回,以下网址用于过滤日期:
http://host/api/controller?$filter=order_date+gt+datetime'2003-01-01'+and+order_date+lt+datetime'2003-12-31'
如果您想要包含时间,则应以ISO 8601格式指定日期。
答案 1 :(得分:2)
使用WCF数据服务客户端API,您将能够使用LINQ子句表达日期约束,例如: context.Orders.Where(o => o.OrderDate< DateTime.Now&& o.OrderDate> DateTime.Now.AddDays(-7))。在从该LINQ查询生成的URL中,您将看到查询参数,例如$filter option,例如http://services.odata.org/(S(readwrite))/OData/OData.svc/Products()?$filter=(ReleaseDate lt datetime'2012-06-19T08:16:01.4283521-07:00') and (ReleaseDate gt datetime'2012-06-26T08:16:01.4293524-07:00')。如果您熟悉LINQ
,LINQPad是了解这些网址的好方法答案 2 :(得分:0)
ASP.NET Web API中的OData支持已经消失,QueryableAttribute
将不会用于RTM(至少目前看来这样)。
查看此提交:Removed QueryAttribute and associated query composition feature
他们还将此行添加为提交消息:
我们计划提供更好的OData支持作为单独的功能 基于OData库。
对你的问题不是一个完整的答案,但希望它有所帮助。