無法將匿名型別轉換為運算式樹狀架構,因為該型別含有的欄位是用來初始化其他欄位

更新: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
    

請參閱

工作

HOW TO:使用運算式樹狀架構建置動態查詢

概念

匿名型別

LINQ 中的運算式樹狀架構