System.Web.OData.Query.ODataQueryOptions.Filter如何处理括号

时间:2019-01-10 11:19:21

标签: c# odata

我正在将ODataQueryOptions对象解析为SQL查询,并且在解析FilterQueryOption成员时,我注意到FilterClause.Expression节点树不包含任何有关括号的显式信息。相反,当括号更改时,“和”和“或”节点的显示顺序也会更改。

ODataQueryOptions在创建表示过滤器表达式的节点树时会使用哪些规则,以使其推断括号所在的位置?

1 个答案:

答案 0 :(得分:0)

我知道了,所以对于任何想知道这里是如何工作的人

对于任何“或”节点,请将整个左项和整个右项封装在括号中。

IE,对于ab | c(d | e),树的结构使得OR节点将连接d和e,因此项应为“(d或e)”,而OR节点将ab和c连接起来。 c(d | e),因此该术语应为“(a和b或c和(d或e))”。