Effective C# 3rd 読書メモ 38 LINQではメソッドではなくラムダ式を使う

以下のように、似通った部分のあるコードを見かけると、共通化したくなるのはプログラマーの性だ。

しかし、以下のような判別ロジックの共通化はうまくいかない。

LINQ to Objectsは、ラムダ式をデリゲートに変換し、コードを実行する。
一方、LINQ to SQLは、ラムダ式から式ツリーを作成し、式を構文解析して、それを別の環境(SQL Server等)で実行する。LINQの式の中にメソッド呼び出しが含まれると例外が発生する。

LINQの式を再利用可能にしたい場合、閉じた型のジェネリックに対する拡張メソッドとして実装するのが最も能率的である。

コメントを残す