今日の知見

Toshが諸々で得た知見を雑に書きます。

8日目-2: ラムダ式を動的に生成したい(C#)

ご挨拶

こんばんは、Toshでございます。
この記事は3日目の穴埋めとなります。

ラムダ式動的生成メモ

C#ラムダ式を書くときは下記のようになるかと思いますが、

item => item % 2 == 1

こいつって「System.Linq.Expressions.Expression<Func<引数の型, 戻り値の型>>」という、式木を表すクラスのオブジェクトになるみたいですね。
なので、ラムダ式の生成とか結合とかは System.Linq.Expressions.Expression 、もしくはこれを継承したクラスを使用すればいいです(例えば、二項演算子を扱うならBinaryExpression とか)。
Expression クラス (System.Linq.Expressions)

引数に添え字を付与したり、式同士を and とか or とかで結合するコードを仕事中に突貫で作ったのですが、正直忘れましたw
(式同士を結合する場合、2つ目以降の式の引数を消し込んだり差し替えたりするのが面倒だったと記憶しておりますorz)

サンプルとか特にありませんが、この辺で m(_ _)m