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

时间:2011-08-08 04:52:57

标签: c# linq-to-sql expression-trees

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

Expression<Func<double, double>> f = x => x * x * 27 + blah ... expression with x;

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

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

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

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

感谢。

1 个答案:

答案 0 :(得分:3)

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