使用不用于比较的lambda函数创建表达式

时间:2012-10-29 12:53:13

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

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

NB。它不仅仅是我需要的成员访问

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

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

1 个答案:

答案 0 :(得分:2)

将您的方法参数更改为:

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

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

将执行lambda的Enumerable.WhereQueryable.Where进行比较和对比,但不是。{/ p>