【发布时间】:2011-01-17 09:01:53
【问题描述】:
我有一个函数可以根据传入的变量的值创建不同类型的表达式。
Protected Function BuildSortPredicate(ByVal tableType As Object, ByRef expr As Expression)
Dim sortExpression As Expression
If tableType Is "Job" Then
sortExpression = Expression.Lambda(Of Func(Of Job, String))(expr)
ElseIf tableType Is "User" Then
sortExpression = Expression.Lambda(Of Func(Of User, Integer))(expr)
...
End If
Return sortExpression
End Function
如何避免冗长的 if/else(或 case 切换)结构? 理想情况下,我正在寻找这样的东西:
Protected Function BuildSortPredicate(ByVal tableType As Object, ByRef exprt As Expression)
Dim sortExpression As Expression
sortExpression = Expression.Lambda(Of Func(Of tableType, String))(expr)
Return sortExpression
End Function
这里的总体目标是将表达式转换为适当的类型,以便我可以在我的 LINQ 查询中使用它。
【问题讨论】:
标签: vb.net .net-3.5 lambda types expression-trees