过滤x和之间的日期;使用ODATA

时间:2012-06-19 10:53:54

标签: c# .net odata asp.net-web-api

我正在研究新的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中翻译?

3 个答案:

答案 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库。

对你的问题不是一个完整的答案,但希望它有所帮助。