c# - Convert from Expression<Func<TModel, string>> to Expression<Func<TModel, bool>> -
what if have expression 'e => e.name' , value 'brad', want compose/modify 'e => e.name.contain("brad")' or 'e => e.name == "brad"'.
i writing below:
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; } i keep getting error "the parameter u not bound in specified linq entities query expression" when query triggered.
would please point out i'm doing wrong here?
thanks lot help
source.body references parameterexpression original lambda, never declare in new lambda.
new u parameter never used.
you should reuse source.parameters[0] instead of creating new parameter.
Comments
Post a Comment