gpt4 book ai didi

c# - 我为什么要使用 ExpressionVisitor?

转载 作者:IT王子 更新时间:2023-10-29 04:39:13 25 4
gpt4 key购买 nike

我从 MSDN 上关于 How to: Modify Expression Trees 的文章中得知ExpressionVisitor 应该做什么。它应该修改表达式。

然而,他们的示例非常不切实际,所以我想知道我为什么需要它?你能举出一些修改表达式树有意义的真实案例吗?或者,为什么必须修改它?从什么到什么?

它还有很多重载来访问各种表达式。我怎么知道什么时候应该使用它们中的任何一个以及它们应该返回什么?我看到人们使用 VisitParameter 并返回 base.VisitParameter(node) 而另一方面则返回 Expression.Parameter(..)

最佳答案

有一个问题,我们在数据库中有包含 0 或 1(数字)的字段,我们想在应用程序上使用 bool 值。

解决方案是创建一个“Flag”对象,其中包含 0 或 1 并转换为 bool。我们在整个应用程序中像使用 bool 一样使用它,但是当我们在 .Where() 子句中使用它时,EntityFramework 提示它无法调用转换方法。

因此,在将树发送到 EF 之前,我们使用表达式访问者将所有属性访问更改为 .Where(x => x.Property) 到 .Where(x => x.Property.Value == 1)。

关于c# - 我为什么要使用 ExpressionVisitor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41432852/

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