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