1

私はこの質問に対する答えをすでに知っているような気がします。

一般的だが複雑な式があり、そのコードを複数の場所で再利用したいと考えています。いくつかのコードで 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 の両方で完全に合法であることを式ツリー インスペクターに認識させます。インライン化する必要があるようです。

これを実現するために私にできることはありますか?これを許可するデリゲートの宣言の形式はありますか?

4

1 に答える 1

2

をクエリしているので、IQueryable<>これを試してください:

public static Expression<Func<MyClass, bool>> GetCheck()
{
    return (x) => x.Value > 10;
}
于 2012-09-21T00:23:53.617 に答える