【问题标题】:Making expressions from lambda functions that are not for comparison从不用于比较的 lambda 函数创建表达式
【发布时间】:2012-10-29 12:53:12
【问题描述】:

我目前正在构建一个用于构建查询的 UI,我希望能够以 lambda 函数的形式存储其他表达式(因为它可以很容易地使用智能感知等添加它们)。但是,我找不到任何方法来获取例如。一个 lambda,它执行成员访问以转换为一个表达式,然后我可以将其插入到表达式树中。

注意。我需要的不仅仅是成员访问权限

即。我正在尝试填写以下函数的主体

Function GetExpression(Of ParamType, ReturnType) _
    (f As Func(Of ParamType, ReturnType)) As Expression

【问题讨论】:

  • 您是要反编译传入的Func,还是只是想要一个在给定ParamType 实例的情况下调用Func 的lambda?

标签: .net vb.net linq lambda linq-expressions


【解决方案1】:

将您的方法参数更改为:

Function GetExpression(Of ParamType, ReturnType) _
    (f As Expression(Of Func(Of ParamType, ReturnType))) As Expression

当您使用 lambda 调用它时,编译器会将标记化的表达式树提供给方法而不是编译的委托。

比较Enumerable.Where,它执行lambda,Queryable.Where,它不执行。

【讨论】:

  • 谢谢,这真的很好,它确实让我的代码更整洁!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-11
  • 2017-09-04
相关资源
最近更新 更多