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();