4

EF エンティティへの拡張メソッドを作成しました。

public static IEnumerable<T> WildcardSearch<T>(this IEnumerable<T> entity, 
                                                 string param, Func<T, 
                                                 string> selector)
{
    return entity.Where(l => SqlFunctions.PatIndex(param, selector(l)) > 0);
}

//exception: This function can only be invoked from LINQ to Entities.
result = context.FOO.WildcardSearch(id, x => x.Id).ToList();

使用しようとすると、上記の例外が発生します。

ただし、コレクションでまったく同じコードを直接実行すると (私が想定していること)、意図したとおりに動作します。

なぜ例外が発生するのですか? これを修正する方法はありますか?

同様のスレッドは、タイプをIQueryableに変更することを提案していますが、役に立たないようです。

//this works
result = context.FOO.Where(x => 
              SqlFunctions.PatIndex(id, x.Id) > 0).ToList();
4

1 に答える 1