计算另一个表达式中的 C# 表达式

发布于 2024-11-28 12:45:43 字数 558 浏览 1 评论 0原文

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

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤独难免 2024-12-05 12:45:43

查看在 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文