Max*_*Max 8 c# linq lambda entity-framework expression-trees
我有一个函数来生成一个在linq Where子句中使用的表达式.
public static Expression<Func<T,bool>> GetWhereCondition<T>() where T : IActive
{
return x => x.Active;
}
Run Code Online (Sandbox Code Playgroud)
(注意IActive仅定义属性'Active')
还有其他相关的功能,我的想法是我可以将所需的条件注入Generic类来控制业务规则等.
问题是当我运行它时,返回的Expression包含lamda(从调试器中看到):
x => Convert(x).Active
Run Code Online (Sandbox Code Playgroud)
这当然被linq拒绝:'LINQ to Entities仅支持转换实体数据模型基元类型.
所以我的问题是......
如何防止此行为.没有必要进行转换,显然它是不可取的.是否有可能阻止这种情况?
Ani*_*Ani 10
好吧,假设这只需要使用类(转换是拳击值类型),你可以添加一个class约束:
public static Expression<Func<T, bool>> GetWhereCondition<T>() where T : class, IActive
{
return x => x.Active;
}
Run Code Online (Sandbox Code Playgroud)
......转换消失了.
| 归档时间: |
|
| 查看次数: |
422 次 |
| 最近记录: |