【发布时间】:2017-04-06 08:41:01
【问题描述】:
我有一个有这个签名的方法
public static IList<T> GetBy<T>(System.Linq.Expressions.Expression<Func<T, bool>> expression)
我通过从表达式树中检索数据来传递 lambda 表达式并在 nhibernate 中进行搜索限制。
所以当类用户传递类似的东西时:
c => c.fullName == "John" && c.lastName == "Smith" && c.lastName != "" || c.fullName != "" && c.Age > 18
我可以从表达式树中读取这个结构,这样我就有了一个完整的智能方式来提供搜索条件
换句话说:我需要将搜索条件传递给数据访问层(Nhibernate)
所以我需要从表达式树中提取标准,然后通过示例将其传递给 n hibernate:
c=>c.fullname = "John"
我将从表达式树中提取以下信息:
propertyname = fullname , value = "John" , restrictiontype = "equality"
然后将此信息传递给休眠,如下所示:
ICriteria crit = session.CreateCriteria(typeof(T));
crit.Add(Restrictions.Eq(propretyName, value));
IList<T> list = crit.Add(List<T>())
return list;
问题是从表达式树中读取真的很困难,所以我想知道你们是否有任何简单的方法可以在表达式树中迭代以提取数据,或者你们有一些代码来从表达式树中检索数据。
【问题讨论】:
-
我已经编辑了提供更多信息的问题,抱歉
标签: c# linq nhibernate expression-trees