質問: 私は頭痛の次のlinq式を変換しようとしている。 ``` Expression> ``` 次のlinq式に... ``` Expression> ``` 上の例では、オブジェクトは常に`U`型です。 私はそれがパラメータ型の間で変換/キャストするのがどれほど簡単か知っていますが、戻り型間のキャスト方法があまりよく分かりません。
回答: 次のようにして新しい式を作成する必要があります。 1. ソースの式の本文に`Expression.Convert`を使用して、結果の本文を作成します。 2. この本体を使用して、ソース式のパラメータを再利用して、 `Expression.Lambda`変換されたラムダ式を作成します。 これを試して: ``` Expression> source = ... var resultBody = Expression.Convert(source.Body, typeof(U)); var result = Expression.Lambda>(resultBody, source.Parameters); ```