私はこのコードを持っています:
var listExpression = new List<Expression>();
var parameter = Expression.Parameter(typeof(T));
var memberExpression = Expression.PropertyOrField(parameter, MyProperty);
listExpression.Add(
Expression.Call(
((MemberExpression)memberExpression), "Contains", null,
Expression.Constant((string)MyValue))
);
Expression body = Expression.Constant(true);
foreach (var expression in listExpression)
body = Expression.And(body, expression);
return Expression.Lambda<Func<T, bool>>(body, parameter);
この結果は次のとおりです。
"True & $var1.AGE >= 5"
この述語をEntityFrameworkで使用しても問題はありませんが、NHiernateでは機能しません。問題は「真」だと思います。この「真」なしでこの述語を作成することは可能ですか?