小编Max*_*Max的帖子

表达式<Func <T,bool >>在泛型方法中创建时添加了不需要的转换

我有一个函数来生成一个在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仅支持转换实体数据模型基元类型.

所以我的问题是......

如何防止此行为.没有必要进行转换,显然它是不可取的.是否有可能阻止这种情况?

c# linq lambda entity-framework expression-trees

8
推荐指数
1
解决办法
422
查看次数

标签 统计

c# ×1

entity-framework ×1

expression-trees ×1

lambda ×1

linq ×1