计算另一个表达式中的 C# 表达式
我想在另一个表达式中使用表达式:
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 时,这将不起作用,因为 f.Compile() 对于 SQL 来说是未知的。
如何在不编译变量 y
的情况下计算变量 y
上的表达式 f
,但仍然使用正常语法来定义 g
?
我不想用一些不可读的 Expression.Add
/Expression.Multiply
等语句来定义所有 g
。
谢谢。
I want to use an expression in another one:
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);
This will not work when sent to LINQ to SQL because f.Compile() is unknown to SQL.
How do you evaluate the expression f
on the variable y
without compiling it, but still using normal syntax to define g
?
I don't want to have to define all of g
with some unreadable Expression.Add
/Expression.Multiply
etc. statements.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
查看在 LINQ 查询中调用函数 和 LINQ 扩展 项目。 CLinq 部分与您的问题无关,但它还包括 LinqExt 库,这正是您正在寻找的。 LinqKit 也使用相同的方法,它还为 Linq 提供了其他有用的扩展。
Take a look at Calling functions in LINQ queries and LINQ Extensions project. CLinq part is irrelevant to your question, but it also includes LinqExt library, which is just what are you looking for. The same approach is also used by LinqKit which also provides other useful extensions for Linq.