gpt4 book ai didi

c# - 从 lambda 创建表达式树

转载 作者:行者123 更新时间:2023-11-30 21:09:54 25 4
gpt4 key购买 nike

我有一个 lambda 表达式:

(x) => x.Visits++

在运行时,我想把它翻译成字符串:

"set Visits = Visits + 1"

或者,如果底层数据存储不同(比如 MongoDB)

{$inc: {Visits : 1}}

我认为这样做的方法是使用表达式树,但是当我将 lambda 表达式分配给表达式树时,我得到“表达式树可能不包含赋值运算符”。

除了编写支持更新的完整 linq 实现之外,还有什么方法可以完成这个任务吗?

最佳答案

当前的 C# 编译器根本不支持它,而且我还没有听说 vNext 有任何变化。当然,严格来说它不是为 C# 3/4 定义的——只有一个“在别处定义”(实际上,AFAIK:处理表达式树构造的规范仍然没有正式记录; 这可能是一件积极的事情,因为很难说它需要规范更改;p)。

有趣的是:从 .NET 4.0 开始,表达式树 API 确实 支持 mutate(在这种情况下,请参阅 Expression.IncrementExpression. PostIncrementAssign) - 因此您可以通过Expression.* 代码在运行时创建表达式树,但坦率地说,这很痛苦且难以管理。因此,这种情况有可能发生改变,但不要抱太大希望。

另请记住 - 将其拉回 的表达式树分析远非微不足道。可行,当然;简单:没有。

关于c# - 从 lambda 创建表达式树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8796056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com