Vb.net 生成Lambda表达式

Vb.net 生成Lambda表达式,vb.net,lambda,expression,Vb.net,Lambda,Expression,很抱歉,我有以下代码: Public Class Fruit Public Property Name As String Public Function GetName() As String Return Name End Function End Class 在上面的代码示例中,如果我想生成Function(m)m.Name,我应该怎么做 因此,我可以这样称呼它: Dim iEnumerableString As IEnumerable(Of S

很抱歉,我有以下代码:

Public Class Fruit
    Public Property Name As String

    Public Function GetName() As String
        Return Name
    End Function
End Class
在上面的代码示例中,如果我想生成
Function(m)m.Name
,我应该怎么做

因此,我可以这样称呼它:

Dim iEnumerableString As IEnumerable(Of String) =
list.Select(GenerateLambda("name"))

谢谢

您可以使用参数调用创建表达式树

GeneratePropertyExpression
方法:

Private Shared Function GeneratePropertyExpression(Of TSource, TResult)(propertyName As String) As Func(Of TSource, TResult)
    Dim parameter = Expression.Parameter(GetType(TSource), "x")
    Dim propertyExpression = Expression.[Property](parameter, propertyName)
    Return Expression.Lambda(Of Func(Of TSource, TResult))(propertyExpression, parameter).Compile()
End Function
用法:

Dim iEnumerableString As IEnumerable(Of String) = list.Select(GeneratePropertyExpression(Of Fruit, String)("Name"))

我还没有测试过,所以如果它不起作用,请告诉我。

很酷。你现在应该花一些时间去了解那里发生了什么(如果你还没有做到的话)。这是学习新语言功能的最好方法。:)
Dim iEnumerableString As IEnumerable(Of String) = list.Select(GeneratePropertyExpression(Of Fruit, String)("Name"))