日期:2014-05-17  浏览次数:20910 次

请教一个Expression的问题,关于linq的三目写法
Expression可以用于组成lambda表达式,我的疑问是我如何用Expression来组成一个三目的表达式?
比如
var a = a.c1 == 1 ? a : null;
这句简单的三目,我如何用Expression来组装lambda?
有高手来支援么?

另外还有个问题,我如何用Expression来实现left join?

------解决方案--------------------
    
//Expression<Func<A, A>> f = a => a.cont >= 23 ? a : null;
            var par = Expression.Parameter(typeof(A), "a");
            var ex = Expression.Lambda(Expression.Condition(Expression.Equal(MemberExpression.Property(par, "cont"), Expression.Constant(23, typeof(int))), par, Expression.Constant(null, typeof(A))), par);
            var s = (ex.Compile() as Func<A, A>)(new A() { cont = 2 });