【发布时间】:2026-01-03 17:40:02
【问题描述】:
我正在尝试在 LINQ 语句中进行异步数据库查询,但遇到了错误。下面的代码在没有 async/await 的情况下运行良好
var newEntities = _repositoryMapping.Mapper.Map<List<Entry>>(entries);
newEntities = newEntities.Where(async e => await !_context.Entries.AnyAsync(c => c.Id == e.Id)).ToList();
严重性代码描述项目文件行抑制状态 错误 CS4010 无法将异步 lambda 表达式转换为委托类型 '功能'。异步 lambda 表达式可能会返回 void,Task 或 Task,它们都不能转换为 '功能'
除了把它分解成一个 foreach 循环之外,我怎样才能使它与 async/await 一起工作?
【问题讨论】:
-
让这个异步 lamda 工作并多次访问数据库可能是错误的方法。让它与一个逻辑 sql 翻译一起工作将是更好的方法。您要做什么,只需检查给定实体的 ID 是否存在?您想在这里解决更大的问题吗?
-
@Qbertsuit?为什么不简单地进行左连接(如果为 null)?
-
@00110001 我只是想将 async/await 添加到一些现有代码中。目前它包含在一个没有意义的 Task.Run 中。我认为代码的原始作者只是想从数据库中已经存在的 newEntries 中删除任何项目
-
@PeterCsala 你能告诉我怎么做吗?
标签: c# linq async-await