私はこの質問に対する答えをすでに知っているような気がします。
一般的だが複雑な式があり、そのコードを複数の場所で再利用したいと考えています。いくつかのコードで Func を返す関数を使用したいと思います。
public static Func<MyClass, bool> GetCheck()
{
return (x) => x.Value > 10;
}
簡単そうです。私が抱えている問題は、LINQ To Entities で使用される LINQ 式に適用するときです。Invoke がサポートされていないというエラーが表示されます。そして、私はその理由を理解しています。私が知らないのは、これを回避できる方法があるかどうかです。私は言いたい...
var check = GetCheck();
IQueryable<MyClass> results = MyClasses.Where(y => check(y));
...そして、Func で発生するすべてのことが LINQ To Entities と DB の両方で完全に合法であることを式ツリー インスペクターに認識させます。インライン化する必要があるようです。
これを実現するために私にできることはありますか?これを許可するデリゲートの宣言の形式はありますか?