首页 新闻 会员 周边

求教两个NewExpression表达式树的合并。

0
悬赏园豆:20 [已关闭问题] 关闭于 2015-06-28 21:31
Expression<Func<UserPO, object>> select1 = o => new { o.ID, o.PassWord };
Expression<Func<UserPO, object>> select2 = o => new { o.LoginCount,o.LoginIP};
 
如何将select1 和 select2  合并组成新的表达式树呢?
它们是NewExpression类型的
 
想通过两个select合并成一个select的。
steden的主页 steden | 初学一级 | 园豆:187
提问于:2015-03-17 11:53
< >
分享
所有回答(2)
0
爱编程的大叔 | 园豆:30839 (高人七级) | 2015-03-17 15:10

谢谢,但仍然没有解决我需要的问题。您给出的是级联的表达式树的合并。而我想要的呢。是非级联的。

支持(0) 反对(0) steden | 园豆:187 (初学一级) | 2015-03-17 15:29

牛X。对Expression好有研究啊,介绍一个高手。

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2015-03-17 15:35

@steden: 首先,你这样的LAMBDA是没法保证能合并成功的。

通常的建议是合并Expression,然后再Lambda。

我就是这么做的。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2015-03-17 15:41
0

这几天又想优化这一部份的功能。之前使用List<Expression>的方式来做变通。但是本着对技术的研究精神,最后还是自己研究出来了。

我的研究思路是:首先,在文中提到的:select1,select2 实际在转成表达式树是,成为了新一个个匿名类。(NewExpression)。然后想要合并,我目前的做法是,动态的生成这个匿名类。然后这4个MemberExpression成员,作为构造参数,来创建一个新的表达式树:Expression.New

steden | 园豆:187 (初学一级) | 2015-06-28 21:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册