型のプロパティは別のプロパティを初期化するために使用されるため、匿名型を式のツリーに変換することはできません。

更新 : 2007 年 11 月

コンパイラは、匿名型の 1 つのプロパティが匿名型の別のプロパティの初期化に使用されるときに、匿名型を式のツリーに変換する操作を受け入れません。たとえば、次のコードでは、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 の式ツリー