簡體   English   中英

表達式方法,主體的默認值

[英]Expression method, default value for the body

我有這個代碼:

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"

當我將此謂詞與Entity Framework一起使用但不適用於NHiernate時,我沒有任何問題。 我認為問題是“真實”。 沒有“ True”就可以創建該謂詞嗎?

更換

Expression body = Expression.Constant(true);
foreach (var expression in listExpression)
    body = Expression.And(body, expression);

通過

var body = listExpression.First();//check first if listExpression.Any() would be better
listExpression.Skip(1).Aggregate(body, Expression.And);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM