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"))