使用非文本表达式进行筛选



如何使用 OData 创建交叉属性比较筛选器。 即类似

/订单?$filter=订单日期 gt 发货日期

所有 OData 示例仅在筛选器表达式的右侧显示文本。

OData 可以做到这一点,还是我错过了什么?

当然你可以做到。 这是来自Netflix的查询,比较了DVD和蓝光标题的可用日期

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

但是,当然,这是相关的ABNF,表明左值和右值是可以互换的,两者都可以是memberExpr或boolFunctionCallExpr,甚至是非布尔表达式(例如:小写(Category/Slug)eq小写(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

最新更新