Я не знаю, если есть более простой способ, но я написал лексер и анализатор для выражений SQL в обычай Abstract Syntax Tree (так как я не знаю, о Expression Trees .NET в в то время), и мне не очень понравилось разбор SQL.
Синтаксис просто не очень разобрать дружественным, поскольку порядок отличается в зависимости от контекста (например, не в NOT IN
VS. IS NOT
), маркеры перегружен (скобка для подмены приоритета оператора по умолчанию против скобки для создания списка как в WHERE x IN (1, 2)
) и так далее.
Очевидно, использование генератора синтаксического анализатора вместо того, чтобы выполнять собственные лексики и синтаксический анализ, облегчит вам работу, но я не знаю, есть ли что-то более специфичное для SQL.
Итак, написание собственного, безусловно, возможно, хотя и утомительно.
Вы нашли решение по этому вопросу. Я также нуждаюсь в получении дерева выражений из строки sql в C# – Saravanan