gpt4 book ai didi

c# - 无法从 Expression< Func < Entity, bool>> 转换为 Func < Entity, bool>

转载 作者:行者123 更新时间:2023-12-02 17:04:20 24 4
gpt4 key购买 nike

我的代码中有这个函数:

public virtual bool Exists<ENTITY>(Expression<Func<ENTITY, bool>> expr)
{
return this._dbSet.Count(expr) > 0;
}

我得到了错误

Cannot convert System.Linq.Expressions.Expression< System.Func< ENTITY, bool>> to System.Func< ENTITY, bool>

现在,如果我将函数更改为:

public virtual bool Exists<ENTITY>(Expression<Func<ENTITY, bool>> expr)
{
var tmp = expr.Compile();
return this._dbSet.Count(tmp) > 0;
}

我收到另一个错误:

Cannot convert System.Func< ENTITY, bool> to System.Linq.Expressions.Expression< System.Func< ENTITY, bool> >

我做错了什么还是编译器疯了?我正在使用 VS2017 C# 7.1

最佳答案

假设您想要计算 _dbSet 中满足谓词的实体 - 以检查是否存在任何元素 ,编译表达式树后,

var tmp = expr.Compile();

你应该添加这个:return this._dbSet.Where(entity => tmp(entity).Count() > 0;

更新

已经nvoigt在他的回答中指出,使用 Any 方法会更合乎逻辑:

return this._dbSet.Any(entity => tmp(entity));

关于c# - 无法从 Expression< Func < Entity, bool>> 转换为 Func < Entity, bool>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52453743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com