以下の簡単なスニペットでは:
static void Main(string[] args)
{
Expression<Func<string, bool>> equal = s => s == "test";
LambdaExpression lambda = Expression.Lambda(equal.Body, Expression.Parameter(typeof(string), "s"));
lambda.Compile();
}
compile メソッドが失敗し、InvalidOperationException
「タイプ 'System.String' の変数 's' がスコープ '' から参照されていますが、定義されていません」.
他の同様の質問を見つけましたが、提供された回答を理解できませんでした。
LambdaExpression の DebugView には次が含まれます。
.Lambda #Lambda1<System.Func`2[System.String,System.Boolean]>(System.String $s) {
$s == "test"
}
したがって、この質問の他の例で見た場合、パラメーターと使用法が一致しませんが、これはここでは問題ではないようです。私は何を間違っていますか?