1

我想要的是,如果我有像'e => e.Name'这样的表达式和一个值'Brad',我想将它组合/修改为'e => e.Name.Contain(“Brad”)'或'e => e.Name == “布拉德”'。

我是这样写的:

    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;
    }

触发查询时,我不断收到错误“参数 u 未绑定在指定的 LINQ to Entities 查询表达式中”。

你能指出我在这里做错了什么吗?

非常感谢你的帮助

4

1 回答 1

1

source.Body引用ParameterExpression原始 lambda 中的 ,您从未在新 lambda 中声明。
永远不会使用您的新u参数。

您应该重用source.Parameters[0]而不是创建新参数。

于 2013-08-16T14:20:01.120 回答