【问题标题】:Use property type in expression在表达式中使用属性类型
【发布时间】: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


    【解决方案1】:

    你想做一个通用函数

    Protected Function BuildSortPredicate(Of T)(ByVal expr As Expression) As Expression
        Dim sortExpression As Expression
        sortExpression = Expression.Lambda(Of Func(Of T, String))(expr)
        Return sortExpression
    End Function
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多