我正在尝试使用 Where() 实现异步方法。我找不到 Where 方法的任何异步版本。ToListAsync 不适用于 IEnumerable。我应该使用不同的方法吗?public async Task<IEnumerable<TEntity>> Where(Func<TEntity, bool> predicate){ var tmp = await this.DbSet.Where(predicate).ToListAsync(); //error: ToListAsync not available return tmp;}DbSet 的类型DbSet<TEntity>该项目以 .NET Standard 2.0 为目标并引用 Microsoft.EntityFrameworkCore 2.2.1,我定义了“使用 Microsoft.EntityFrameworkCore”。我在文档中看到大多数扩展都针对 IQueryable<>,但我使用的是 IEnumerable<>。这可能是问题吗?但是 Where() 返回 IEnumerable。有任何想法吗?
3 回答
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
您需要使用表达式,而不是函数。
所以:
public async Task<IEnumerable<TEntity>> Where(Expression<Func<TEntity, bool>> predicate)
{
var tmp = await this.DbSet.Where(predicate).ToListAsync();
return tmp;
}
Func<TEntity, bool>需要一个实际的函数,而Expression<Func<TEntity, bool>>需要一个表达式树。基于IQueryable此表达式树构建您的 SQL 查询。通过使用 Func,您可以从常规 LINQ 调用 Where 的重载,这将返回一个 IEnumerable。哪个没有 ToListAsync。
- 3 回答
- 0 关注
- 111 浏览
添加回答
举报
0/150
提交
取消