不希望这样:我Expression代码生成的Body是:Body = {s.Contains("123")}。
我希望的结果是:Body = {s.Contains(str)} ;即Contains(变量),非Contains("字符串")。
----------------------------------------------------------------------------------------------
我生成表达式的程序如下:
private static Expression<Func<T, bool>> CreateContainsExpression<T>(string propertyName, string propertyValue)
{
var parameterExp = Expression.Parameter(typeof(T), "type");
var propertyExp = Expression.Property(parameterExp, propertyName);
MethodInfo method = typeof(string).GetMethod("Contains", new[] { typeof(string) });
var someValue = Expression.Constant(propertyValue, typeof(string));
var containsMethodExp = Expression.Call(propertyExp, method, someValue);
return Expression.Lambda<Func<T, bool>>(containsMethodExp, parameterExp);
}
-----------------------------------------------------------------------------------------------------
A:
Expression<Func<String, bool>> exp = s => s.Contains("123");
Body = {s.Contains("123")}
B:
string str = "1234";
Expression<Func<String, bool>> exp = s => s.Contains(str);
Body = {s.Contains(value(ConsoleApplication1.Program+<>c__DisplayClass0_0).str)}
如上,我希望的是B。使用Expression怎么构建呢??
如上,我希望的是B。使用Expression怎么构建呢??
如上,我希望的是B。使用Expression怎么构建呢??
既然用的是Expression,怎么还用到Reflection?这个地方就是一个问题
呵呵。。不解决问题,反而来找问题。
结帖!本人已经解决了!
@胡 杨: 请速分享出来
大神,怎么解决的啊?
大神怎么解决的 急需解决办法 谢谢