C# 任何包装都可以。方法无法转换为存储表达式
我有以下代码:C# 任何包装都可以。方法无法转换为存储表达式,c#,.net,linq,entity-framework,iqueryable,C#,.net,Linq,Entity Framework,Iqueryable,我有以下代码: public static bool ContainEx<T>(this IQueryable<T> query, System.Linq.Expressions.Expression<System.Func<T, bool>> expression) { return query.Any(expression); } 我收到以下错误消息: System.NotSupportedException:LINQ to实体无法识
public static bool ContainEx<T>(this IQueryable<T> query, System.Linq.Expressions.Expression<System.Func<T, bool>> expression)
{
return query.Any(expression);
}
我收到以下错误消息:
System.NotSupportedException:LINQ to实体无法识别
方法布尔
ContainEx[Bonus](System.Linq.IQueryable`1[SDataEntities.Bonus],
System.Linq.Expressions.Expression`1[System.Func`2[sdataenties.Bonus,System.Boolean]]
方法,而此方法无法转换为存储表达式
如果我使用任何:
return bonusesWhereSearch.WhereEx(x => userBonusesWhereSearch.Any(y => y.Bonus_Id == x.Id));
这确实有效。这里的问题是,实体框架不执行ContainEx,而是尝试将此方法转换为SQL。由于这是自定义方法,所以转换失败。如果您直接使用Any
,它将正确地转换为SQL等价物。如何更改包装器?我需要用户包装器。请使用有效的代码
return bonusesWhereSearch.WhereEx(x => userBonusesWhereSearch.Any(y => y.Bonus_Id == x.Id));