asp.net-core-3.1 - ASP.NET Core 异步任务> 不能在“foreach”中使用
问题描述
我一直试图在 asp.net core 3.0 中了解异步,但我仍然缺少一些东西。
我有一些异步数据库查询:
public async Task<IList<MyObject>> GetAll(MyContext context)
{
var a = MyMethodA(context);
var b = MyMethodA(context);
return (await Task.WhenAll(a, b)).SelectMany(e => e).ToList();
}
索引.cs:
public Task<IList<MyObject>> MyDBList { get; set; }
public void OnGet()
{
MyDBList = _myInterface.GetAll(context);
}
索引.cshml
foreach (var x in Model.MyDBList) {
<p>x.ID</p>
}
在 index.cshtml 上,我收到错误 System.Threading.Tasks.Task> cannot be used in 'foreach' 语句,因为它既没有实现 'IEnumerable' 或 'IEnumerable',也没有合适的 'GetEnumerator'
解决方案
看起来您需要在调用异步函数时使用 await - 如下所示:
public void OnGet()
MyDBList = await _myInterface.GetAll(context);
}
推荐阅读
- angular - 角反应形式设置值
- java - 如何将包含反斜杠 (\) 的用户名传递给 jcifs smb?
- node.js - Heroku 应用程序在本地工作,但在部署时不工作
- android - 将 chromium android 构建为库 [android aar archive]
- html - 为什么 Webkit 和 Gecko 的动画行为不同?
- r - 合并/合并/合并 ONE 数据集中的两列忽略 NA
- c# - 无法在 C# 中序列化数组对象
- sql - 在 powershell 中调用-SQLCMD
- php - 在最后一次出现字符串后替换
- java - 检查Eureka Client是否已注册到Server的正确方法