使用非文字表达式过滤

时间:2012-12-12 19:19:05

标签: odata

如何使用OData创建交叉属性比较过滤器。即

之类的东西

/订单?$ filter = OrderDate gt ShippedDate

所有OData示例仅显示过滤器表达式右侧的文字。

这可能与OData有关,还是我错过了什么?

2 个答案:

答案 0 :(得分:3)

当然可以这样做。以下是来自Netflix的查询,比较了DVD和BluRay标题的可用日期

http://odata.netflix.com/Catalog/Titles?$filter=Dvd/AvailableFrom%20gt%20BluRay/AvailableFrom

答案 1 :(得分:1)

但是当然,这里是相关的ABNF,显示左右值是可互换的,并且都可以是memberExpr或boolFunctionCallExpr,甚至是非bobo表达式(例如:lowercase(Category / Slug)eq lowercase(substring(ProcuctName) ,10))。

commonExpr                  =   [ WSP ] (
                                    boolCommonExpr / 
                                    methodCallExpr /
                                    parenExpr / 
                                    literalExpr / 
                                    addExpr /
                                    subExpr / 
                                    mulExpr / 
                                    divExpr /
                                    modExpr /  
                                    negateExpr / 
                                    memberExpr / 
                                    firstMemberExpr / 
                                    castExpr / 
                                    functionCallExpr 
                                ) [ WSP ]

ltExpr                      =   commonExpr WSP "lt" WSP commonExpr