C # расширенный оператор запроса String Processing - PullRequest
2 голосов
/ 18 июня 2009

Я ищу лучший метод или библиотеку для обработки строки в дерево объектов ..

вот пример:

"[age] = '37' и [пол] не равен нулю и [optindate]> '2003/01/01' и [idnumber] равен нулю и ([saresident] = '52' или [гражданство] 'а%') "

Я должен быть в состоянии представить это в дереве что-то вроде этого:

{attribute='age', operator='=', value='37', opperand='And'}
{attribute='gender', operator='Is Not Null', value='', opperand='And'}
{attribute='optindate', operator='>', value='2003/01/01', opperand='And'}

и т.д ....

любые предложения будут великолепны!

Ответы [ 3 ]

1 голос
/ 18 июня 2009
1 голос
/ 18 июня 2009

Если вам нужно сохранить операции в древовидной структуре, вы должны использовать постфиксную или префиксную нотацию. например возраст = 37, а пол не равен нулю должен храниться как

и = возраст 37! = Пол нуль

так что дерево должно быть как

        and
   =         !=
age 37  gender  null

Вы можете использовать эти ссылки для более подробной информации: Обозначения, используемые для операций и Выражения, преобразование и оценка с помощью C (все, что вам нужно знать о выражениях)

1 голос
/ 18 июня 2009

Как насчет динамической библиотеки LINQ ? Вы можете использовать «как есть» или посмотреть, как он создает предикат Expression<Func<T,bool>> (то есть дерево).

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