在另一个表达式中评估C#表达式

我想在另一个中使用表达式:

Expression<Func> f = x => x * x * 27 + blah ... expression with x; Expression<Func> g = y => 3 + 8 * f.Compile()(y) * y * blah... expression with y and f(y); 

这在发送到LINQ to SQL时不起作用,因为SQL不知道f.Compile()。

如何在不编译变量y情况下计算变量y上的表达式f ,但是仍然使用常规语法来定义g

我不想用一些不可读的Expression.Add / Expression.Multiply等语句来定义所有g

谢谢。

看一下LINQ查询和LINQ Extensions项目中的调用函数 。 CLinq部分与您的问题无关,但它也包括LinqExt库,这正是您正在寻找的。 LinqKit也使用相同的方法,它也为Linq提供了其他有用的扩展。