我有一个函数来生成要在 linq Where 子句中使用的表达式。
public static Expression<Func<T,bool>> GetWhereCondition<T>() where T : IActive
{
return x => x.Active;
}
(注意 IActive 只定义了属性 'Active')
还有其他相关功能,我的想法是我可以将所需的条件注入通用类来控制业务规则等。
问题是当我运行它时,返回的表达式包含 lamda(从调试器中看到):
x => Convert(x).Active
这当然被 linq 拒绝:“LINQ to Entities 仅支持强制转换实体数据模型原始类型。”
所以我的问题是......
我该如何防止这种行为。没有必要进行转换,显然这是不可取的。甚至有可能防止这种情况发生吗?