首页新闻找找看学习计划

C#中使用Expression构建xx.Contains(变量)?(熬了两夜没实现)

0
[已关闭问题] 关闭于 2017-08-18 15:40

不希望这样:我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怎么构建呢??

胡      杨的主页 胡 杨 | 初学一级 | 园豆:186
提问于:2017-08-18 14:28
< >
分享
所有回答(2)
0

既然用的是Expression,怎么还用到Reflection?这个地方就是一个问题

dudu | 园豆:40747 (高人七级) | 2017-08-18 15:31

呵呵。。不解决问题,反而来找问题。

结帖!本人已经解决了!

支持(0) 反对(0) 胡 杨 | 园豆:186 (初学一级) | 2017-08-18 15:40

@胡 杨: 请速分享出来

支持(0) 反对(0) dudu | 园豆:40747 (高人七级) | 2017-08-18 17:59
0

大神,怎么解决的啊?

大叔、 | 园豆:80 (初学一级) | 2019-07-04 15:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册