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

11

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

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);

由于 f.Compile() 对于 LINQ to SQL 是未知的,因此这种方法在发送到 LINQ to SQL 时无法使用。

如何在不编译 f 的情况下,使用正常语法来定义 g 并对变量 y 进行表达式求值?

我不想用一些难以理解的 Expression.Add/Expression.Multiply 等语句来定义所有的 g

谢谢。

1个回答

3
请看一下在LINQ查询中调用函数LINQ扩展项目。CLinq部分与您的问题无关,但它还包括LinqExt库,这正是您要找的东西。同样的方法也被LinqKit使用,它还为Linq提供其他有用的扩展。

非常感谢,我从你给出的链接下载了 LinqKit,并且在使用 InvokeAsExpandable 时运行得非常完美。同意,这些文章非常有趣。 - SemMike
最好能展示它适用的语法。 - Vladimir
@Vladimir,问题是在C#中没有这样的语法,你必须使用带有其自己语法的第三方库,或者你可以自己实现一些功能。无论如何,关于你的评论现在做任何事情都有点晚了,因为我已经好几年没有使用.NET了。 - Konstantin Oznobihin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接