У меня есть набор классов, которые я использую для уровня доступа к данным для некоторых клиентов.В рамках доступа к данным я разрешаю отправку набора фильтров в следующем формате:
"{Member[.Member....]}{Operator}{Value}"
Я хотел бы превратить эти строки в делегаты для использования в запросе LINQ, например:
.Where([delegate returned by a factory])
Вот более конкретный пример: выражение
IEnumerable<Parent> parents = GetSomeParents();
string filter = "Child.Id=5";
var expression = FilterFactory<Parent>.GetExpression(filter);
parents = parents.Where(expression);
будет содержать делегат: parent => parent.Child.Id == 5
Есть ли способ с помощью отражения создать конструкцию FilterFactory в общемспособ обработать любой путь члена я отправляю?Пути с индексацией не требуются, но было бы неплохо.