今週は式ツリーで遊んでいますが、この式を実行するとエラーが発生するのはなぜだろうかと思っています。
var pe = Expression.Parameter(typeof(Nullable<DateTime>));
var ex = Expression.Lambda<Func<DateTime?, bool>>(
(Expression<Func<DateTime?, bool>>) (x => x.HasValue), pe);
この背後にある考え方は、式ツリー API と linq 式を組み合わせて式ツリーを作成することです。Expression.Property(...,..)
たとえば、 I will have just haveを呼び出す代わりに、物事を書くのが簡単になりx => x.Prop
ますよね?
これの代わりに私の例では、これExpression.Property(..hasvalue..)
があります: x.HasValue
. 書く時間を節約できますし、見た目も短くなりますよね?
問題は、これが可能かどうかです。
私は何かが欠けているかもしれないと思います
Expression<Func<DateTime?, bool>> foo = x => x.HasValue (this works)
と
Func<DateTime?, bool> bar = x => x.HasValue (this works too)
二人の背後で何が起きているのか? 彼らは同じですか?
linq式は標準の式ツリーAPIと混在できますか???
これについて教えてください、私は迷っています。:)