Как реализовать фильтрацию записей на основе SQL подобного текста?
Доброго дня!
Поступила такая задача:
API должно поддерживать фильтрацию с использованием скобок для определения первенства условий и использованием любой комбинации доступных полей. Необходима поддержка операция AND, OR, EQUALS, NOT EQUALS, GREATER THAN, LOWER THAN.
Пример: (date eq '2016-05-01') AND ((distance gt 20) OR (distance lt 10)).
То есть, имеется несколько различных методов для получения данных, все они должны поддерживать фильтрацию такого рода, причём для каждого типа возвращаемых данных имеется свой набор полей для которых доступна фильтрация.
Есть какие-то штатные средства, которые могут быть полезны для реализации такой штуки?
Само собой, надо проверить корректность синтаксиса запроса и проверить, чтобы небыло никаких SQL иньекций <- Это можно реализовать через валидацию запроса regex-ом.
Есть у кого какие полезные мысли? На .NET, ADO.NET, Entity Framework.