【发布时间】:2020-08-21 02:08:04
【问题描述】:
.Net Core 3.1, C# 8 中的这段代码:
await dB.GetListAsync<OrigineDB>();
导致此错误:
IAsyncEnumerable 不包含“GetAwaiter”的定义
此处提供的答案:https://stackoverflow.com/a/60148747/4180382 对我没有多大帮助,因为我的方法包含像示例中一样的 yield 和循环。
我应该做哪些改变?我不想返回列表。
async IAsyncEnumerable<T> GetListAsync<T>() where T : class, new()
{
cn = new SqlConnection(cs);
cn.Open();
cmd = new SqlCommand(nameProcStock, cn);
cmd.CommandType = CommandType.StoredProcedure;
if (parms != null)
foreach (KeyValuePair<string, object> kvp in parms)
cmd.Parameters.AddWithValue(kvp.Key, kvp.Value);
dr = await cmd.ExecuteReaderAsync();
while (dr.Read())
yield return ConvertToObject<T>();
}
【问题讨论】:
-
IAsyncEnumerable 应该在 foreach 循环中使用,然后你可以等待它
-
好的,但是如何将 dr.Read() 更改为 foreach 循环?它返回一个布尔值。
-
GetObjectListAsync<OrigineDB>和GetListAsync<T>是如何相互关联的? -
@PavelAnikhouski 更正了错字
-
@CodeNotFound .net core 3.1
标签: c# .net-core-3.1 iasyncenumerable