给出以下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);
我无法以任何方式工作。为简单起见,我的代码可以省略。我只想获得生成结果的任何指导。