我在我的代码中有这个函数:
public virtual bool Exists<ENTITY>(Expression<Func<ENTITY, bool>> expr)
{
return this._dbSet.Count(expr) > 0;
}
我遇到了以下错误:
无法将 System.Linq.Expressions.Expression< System.Func< ENTITY, bool>> 转换为 System.Func< ENTITY, bool>
如果我将函数更改为以下内容:
public virtual bool Exists<ENTITY>(Expression<Func<ENTITY, bool>> expr)
{
var tmp = expr.Compile();
return this._dbSet.Count(tmp) > 0;
}
我遇到了另一个错误:
无法将 System.Func< ENTITY, bool> 转换为 System.Linq.Expressions.Expression< System.Func< ENTITY, bool> >
我做错了什么,还是编译器出了问题?我使用的是VS2017 C# 7.1。
expression.compile()
来从表达式中获取一个实例的func。 - undefinedx.Count() > 0
,因为这可能需要数据源抓取和计算所有项目才能检查是否有任何项目,这样非常低效。应该使用x.Any()
,因为只需要获取一个项目就可以知道是否有任何项目。 - undefined