Я ищу либо лучшую практику, либо библиотеку для обработки строки в дереве объектов.
вот пример:
"[age] = '37' И [пол] не является нулевым и [optindate] > '2003/01/01' И [idnumber] is Null And ([saresident] = '52' или [гражданство] Like 'а%')"
Я мог бы объективировать это в дереве примерно так:
{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'}
и т.д....
любые предложения были бы замечательными!
Если вам нужно сохранить операции в древовидной структуре, вы должны использовать постфиксную или префиксную нотацию. например возраст = 37, а пол не равен нулю следует хранить как
и = возраст 37!= гендерный нуль
поэтому дерево должно быть как
and
= !=
age 37 gender null
Вы можете использовать эти ссылки для более подробной информации: Обозначения, используемые для операций и Выражения, конверсия и оценка с помощью C (все, что вам нужно знать о выражениях)
Посмотрите Регулярные выражения
Как насчет динамической библиотеки LINQ ? Вы можете либо использовать "как есть" , либо посмотреть, как он создает предикат Expression<Func<T,bool>>
(который является деревом).