Expression<Func<UserPO,
object
>> select1 = o =>
new
{ o.ID, o.PassWord };
Expression<Func<UserPO,
object
>> select2 = o =>
new
{ o.LoginCount,o.LoginIP};
谢谢,但仍然没有解决我需要的问题。您给出的是级联的表达式树的合并。而我想要的呢。是非级联的。
牛X。对Expression好有研究啊,介绍一个高手。
@steden: 首先,你这样的LAMBDA是没法保证能合并成功的。
通常的建议是合并Expression,然后再Lambda。
我就是这么做的。
这几天又想优化这一部份的功能。之前使用List<Expression>的方式来做变通。但是本着对技术的研究精神,最后还是自己研究出来了。
我的研究思路是:首先,在文中提到的:select1,select2 实际在转成表达式树是,成为了新一个个匿名类。(NewExpression)。然后想要合并,我目前的做法是,动态的生成这个匿名类。然后这4个MemberExpression成员,作为构造参数,来创建一个新的表达式树:Expression.New