簡體   English   中英

從表達式轉換 <Func<TModel, string> &gt;表達 <Func<TModel, bool> &gt;

[英]Convert from Expression<Func<TModel, string>> to Expression<Func<TModel, bool>>

我想要的是,如果我有一個表達式,例如'e => e.Name'和一個值'Brad',我想將其撰寫/修改為'e => e.Name.Contain(“ Brad”)'或'e => e.Name ==“ Brad”'。

我正在寫如下:

    public Expression<Func<TModel, bool>> ToBool(Expression<Func<TModel, object>> source, string value)
    {
        ParameterExpression paramExpression = Expression.Parameter(typeof(TModel), "u");
        ConstantExpression valueExpression = Expression.Constant(value, typeof(string));
        BinaryExpression equalValue = Expression.MakeBinary(ExpressionType.Equal, source.Body, valueExpression);
        Expression<Func<TModel, bool>> lambdaResult = Expression.Lambda<Func<TModel, bool>>(equalValue, new ParameterExpression[] { paramExpression });
        return lambdaResult;
    }

觸發查詢時,我不斷收到錯誤消息“在指定的LINQ to Entities查詢表達式中未綁定參數u”。

您能指出我在做什么錯嗎?

非常感謝你的幫助

source.Body從原始lambda引用ParameterExpression ,而您從未在新lambda中聲明該ParameterExpression
永遠不會使用新的u參數。

您應該重用source.Parameters[0]而不是創建新參數。

暫無
暫無

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

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