- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 .net core 3.1 控制台应用程序。
我有一个具有以下签名的方法:
public async IAsyncEnumerable<string> GetFilePathsFromRelativePathAsync(string relativePath)
private async Task<IEnumerable<FileUpload>> GetFileUploadsAsync(string relativePath)
{
...
var filePaths = await service.GetFilePathsFromRelativePathAsync(relativePath);
...
}
Error CS1061 'IAsyncEnumerable' does not contain a definition for 'GetAwaiter' and no accessible extension method 'GetAwaiter' accepting a first argument of type 'IAsyncEnumerable' could be found (are you missing a using directive or an assembly reference?)
最佳答案
正确的语法是:
await foreach(var filePath in service.GetFilePathsFromRelativePathAsync(relativePath))
{
....
}
IAsyncEnumerable
用于返回可以单独处理的元素流。这就是为什么该功能实际上被称为
async streams ,引起了相当多的困惑
IEnumerable<FileUpload>
并在创建后立即返回新的
FileUpload
实例:
private async IAsyncEnumerable<FileUpload> GetFileUploadsAsync(string relativePath)
{
await foreach(var filePath in service.GetFilePathsFromRelativePathAsync(relativePath))
{
var upload = new FileUpload(filePath);
yield return upload;
}
}
您还可以收集所有结果,将它们存储在列表中并返回它们,例如使用
ToListAsync
扩展方法:
public static async Task<List<T>> ToListAsync<T>(this IAsyncEnumerable<T> source, CancellationToken cancellationToken=default)
{
var list = new List<T>();
await foreach (var item in source.WithCancellation(cancellationToken).ConfigureAwait(false))
{
list.Add(item);
}
return list;
}
最好的代码是你不写的代码。
System.Linq.Async 项目为 IAsyncEnumerable 提供了 LINQ 运算符,包括
ToList ,可以在
on NuGet 中找到。
ValueTask
代替
Task
以及对来自 GroupBy 和 Reverse 等其他运算符的数据的特殊处理,这些运算符在产生输出之前必须消耗整个
IAsyncEnumerable
。
关于c# - .net 核心 3.1 : 'IAsyncEnumerable<string>' does not contain a definition for 'GetAwaiter' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60148340/
我有以下界面: public interface IValidationSystem { IAsyncEnumerable ValidateAsync(T obj); } 我正在尝试以这种方式
我想知道是否有办法创建 IAsyncEnumerable或 IAsyncEnumerator通过 Source 对象,而不是像 TaskCompletionSource允许一个人为任务做。特别是Tas
正如标题所说,我必须执行以下功能: public async IAsyncEnumerable GetByPipeline(int pipelineId, [EnumeratorCancell
C# 8 添加了对异步迭代器 block 的支持,因此您可以等待并返回 IAsyncEnumarator 而不是 IEnumerable: public async IAsyncEnumerable
我正在尝试使用基于 IAsyncEnumerable 的 API 包装基于事件的异步订阅 API。 .基本上沿着以下路线: async IAsyncEnumerable ReadAll() {
我们有这样的代码: var intList = new List{1,2,3}; var asyncEnumerables = intList.Select(Foo); private async I
我有两种方法连接到 Foo 的两个不同来源s 返回两个 IAsyncEnumerable .我需要获取所有 Foo s 来自两个来源,然后才能处理它们。 问题 :我想同时(异步)查询两个源,即。不等S
我想知道是否有一种方法可以编写一个函数来“传递”一个 IAsyncEnumerable ......也就是说,该函数将调用另一个 IAsyncEnumerable 函数并产生所有结果而无需编写 for
我正在构建一个客户端,用于持续使用数据源中的新记录。集成是基于拉取的,我的客户定期查询数据源以获取新记录。我使用 IAsyncEnumerable 作为这个连续的新记录流的返回类型。以下是该方法的要点
我有一个这样写的界面: public interface IItemRetriever { public IAsyncEnumerable GetItemsAsync(); } 我想编写一个不
这个问题的答案可能是不可能,但问题是:假设您有一个 C# 方法来使用 TextReader 中的行返回 IAsyncEnumerable .你如何确保什么时候DisposeAsync在 IAsyncE
这个问题的答案可能是不可能,但问题是:假设您有一个 C# 方法来使用 TextReader 中的行返回 IAsyncEnumerable .你如何确保什么时候DisposeAsync在 IAsyncE
我正在使用 EF Core 3.1 和 Postgresql 对数据库运行一个查询,该查询有时会根据请求的参数返回较大的结果集。我使用 Async Enumerable 来流式传输结果,有时可能需要一
我想对一个方法进行单元测试,该方法调用返回 IAsyncEnumerable 的服务的另一个方法.我创建了一个模拟服务 Mock我想设置这个模拟,但我不知道该怎么做。是否可以 ?是否有其他单元测试方法
我有一个 IAsyncEnumerable,它返回本质上是 Key/IEnumerable 的序列。对。我有代码使用这个和其他类似的枚举,假设它将接收一个唯一的键集合。但是我的一个数据源不遵守此约束。
这个问题在这里已经有了答案: How to implement an efficient WhenEach that streams an IAsyncEnumerable of task resu
我有一种情况需要从多个 IAsyncEnumerable 源接收数据。为了提高性能,它应该以并行方式执行。 我已经使用 AsyncAwaitBestPractices 编写了这样的代码来实现这个目标,
我有一个简单的场景,我有一个具有以下方法的类: public async IAsyncEnumerable GetEntities(IQueryOptions options){ if(!vali
我正在尝试检索使用 C# 8.0 中新的 AsyncEnumerables 分页的数据。回到同步 IEnumerable 世界,代码看起来像这样: private IEnumerable Exampl
运行 IAsyncEnumerable 的枚举两次不可能? 一次CountAsync已运行,await foreach不会枚举任何项目。为什么?AsyncEnumerator 上似乎没有重置方法. v
我是一名优秀的程序员,十分优秀!