Как System.Web.OData.Query.ODataQueryOptions.Filter обрабатывает скобки - PullRequest
0 голосов
/ 10 января 2019

Я анализирую объект ODataQueryOptions в запросе SQL и при синтаксическом анализе члена FilterQueryOption я заметил, что дерево узлов FilterClause.Expression не содержит какой-либо явной информации о скобках. Вместо этого порядок, в котором появляются узлы «и» и «или», изменяется при изменении скобок.

Какие правила используются ODataQueryOptions при создании дерева узлов, представляющего выражение фильтра, которое позволит ему определить, где находятся скобки?

1 Ответ

0 голосов
/ 11 января 2019

Я понял это, так что для всех, кто интересуется здесь, как это работает:

Для любого узла ИЛИ заключите в скобки весь левый член и весь правый член.

IE, для ab | c (d | e) дерево структурировано так, что узел OR соединяет d и e, так что термин должен быть «(d или e)», а узел OR соединяет ab и c (d | e), поэтому термин должен быть «(a и b или c и (d или e))».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...