c# - 使用 IAsyncEnumerable 重载方法
问题描述
我正在构建一个 API,它将通过查询一个数据库来进行分页和排序,该数据库有很多条目,我停在我构建方法重载的地方,并且可以让它正常工作,至少以正确的方式我认为。
这是一个模拟代码:
public virtual IAsyncEnumerable<PagedResults<T>> GetPagedItems(int i)
{
return GetPagedItems(null, i);
}
public virtual async IAsyncEnumerable<PagedResults<T>> GetPagedItems(string s, int i)
{
//here I get 2 datasets, one with the items (25 for instance)
//and in the 2nd one I get the total count
var datasets = await GetItemsFromDB<T>();
var items = datasets[0].ToList();
var totalCount = datasets[1].ReadFirst();
yield return new PagedResults<T>
{
Items = items,
TotalCount = totalCount
};
}
我的问题是,在第一种方法(唯一一个参数)中它可以工作,但没有'async'关键字。
在第一个实现中,我添加了异步,但我收到了来自 Visual Studio 的警告,说我无法从迭代器返回值(这是有道理的),然后添加了“yield async”,它抱怨我无法将 PagedResults 转换为IAsyncEnumerable<PagedResults>。
我想知道我的最终实现是否正确,如果我使用第一种方法,它是否可以进行异步流式传输。
解决方案
推荐阅读
- branch - 在远程仓库中创建了新分支,现在无法在本地签出新分支
- mongodb - $lookup 查找数组 mongo 聚合中的每个元素
- jsf - 删除尾随空格
- java - 返回列表的方法
带参数列表 , 列表 , 其中 S1 和 S2 扩展 T - c - 检测到堆栈粉碎,核心转储
- javascript - 如何在反应路由器中加载下一页之前等到服务调用完成
- r - 在数据帧的子集中读取数据之前,将数据读取为空
- node.js - Hyperledger Fabric NodeJS 客户端 grpc 问题
- javascript - 从特定 API 获取 json 数据失败,但有时它会解析它
- javascript - 未捕获的 ReferenceError:未定义函数。jQuery 已附加