无法将匿名类型转换为表达式树,因为它包含用于初始化另一个字段的字段

更新:2007 年 11 月

如果匿名类型的一个属性用于初始化匿名类型的另一个属性,则编译器无法接受将该匿名类型转换为表达式树。例如,在下面的代码中,先在初始化列表中声明 Prop1,然后将其用作 Prop2 的初始值。

Module M2

    Sub ExpressionExample(Of T)(ByVal x As Expressions.Expression(Of Func(Of T)))
    End Sub

    Sub Main()
        ' The following line causes the error.
        ' ExpressionExample(Function() New With {.Prop1 = 2, .Prop2 = .Prop1})

    End Sub
End Module

**错误 ID:**BC36548

更正此错误

  • 将 Prop1 的初始值赋予局部变量。将该变量分配给 Prop1 和 Prop2,如下面的代码所示。

    Sub Main()
    
        Dim temp = 2
        ExpressionExample(Function() New With {.Prop1 = temp, .Prop2 = temp})
    
    End Sub
    

请参见

任务

如何:使用表达式树来生成动态查询

概念

匿名类型

LINQ 中的表达式树