У меня есть метод, который имеет эту подпись
public static IList<T> GetBy<T>(System.Linq.Expressions.Expression<Func<T, bool>> expression)
Я использую для передачи лямбда-выражений и ограничения поиска в nhibernate путем извлечения данных из expressiontree.
Поэтому, когда пользователь класса передает что-тонапример:
c => c.fullName == "John" && c.lastName == "Smith" && c.lastName != "" || c.fullName != "" && c.Age > 18
Я получаю эту структуру для чтения из дерева выражений, таким образом, у меня есть полный интеллектуальный способ предоставить критерии поиска
Другими словами: мне нужно передать критерии поиска вслой доступа к данным (Nhibernate)
Поэтому мне нужно извлечь критерии из дерева выражений, а затем передать его в спящий режим n, например:
c=>c.fullname = "John"
Я извлеку следующую информацию из дерева выражений:
propertyname = fullname , value = "John" , restrictiontype = "equality"
и затем передайте эту информацию в nhibernate следующим образом:
ICriteria crit = session.CreateCriteria(typeof(T));
crit.Add(Restrictions.Eq(propretyName, value));
IList<T> list = crit.Add(List<T>())
return list;
В любом случае проблема заключается в том, что действительно трудно прочитать из expressiontree, поэтому мне было интересно, если у вас, ребята, естьлюбой простой способ, может быть, перебирать дерево выражений для извлечения данных, или, может быть, у вас есть какой-то код для извлечения данных из ExpressionTreе.