使用表达式在NHibernate QueryOver中进行动态过滤

时间:2015-06-16 13:40:34

标签: c# nhibernate expression queryover

给出以下QueryOver:

  OrderPresentationEntity orderEntity = null;
  var query = Session.QueryOver<OrderPresentationEntity>(() => orderEntity);

我想将以下声明动态化:

query = query.Where(() => orderEntity.CreatorString.Trim().ToLowerInvariant() == "user name");

我通过以下方式获得属性:

var property = ... // code to dynamically generate expression here

var toLower = typeof(string).GetMethod("ToLower", new Type[] { });
var trim = typeof(string).GetMethod("Trim", new Type[] { });
property = System.Linq.Expressions.Expression.Call(System.Linq.Expressions.Expression.Call(property, trim), toLower);

// for simplicity I use value instead of variable for User Name
var targetText = System.Linq.Expressions.Expression.Constant("User Name".ToLower());

我使用自定义函数生成==,&gt;,&lt;

等运算符
 var op = GetOperator("CreatorString", property, targetText);
 var result = System.Linq.Expressions.Expression.Lambda<Func<OrderPresentationEntity, bool>>(op, parameter);

我无法以任何方式工作。为简单起见,我的代码可以省略。我只想获得生成结果的任何指导。

0 个答案:

没有答案