14

似乎没有任何包含对 .NET Core 打包的 IAsyncEnumerable 的 linq 支持。能够执行 ToList 和 Count 等简单事情的正确方法是什么?

4

1 回答 1

16

IAsyncEnumerable<T>这是一个很好的问题,因为在默认 .NET Core 应用程序中具有隐式框架引用的IntelliSense 中几乎没有有用的项目。

预计您将添加System.Linq.Async(称为 Ix Async,请参见此处)包,如下所示:

<PackageReference Include="System.Linq.Async" Version="4.0.0" />

然后你可以使用CountAsync, 或ToListAsync:

async IAsyncEnumerable<int> Numbers()
{
    yield return 1;
    await Task.Delay(100);
    yield return 2;
}

var count = await Numbers().CountAsync();
var myList = await Numbers().ToListAsync();

正如评论中指出的那样,这些方法本身并没有那么有用,它们应该在您使用更强大的功能之后使用,同时将您的数据保持为异步流,例如SelectAwait等等WhereAwait......

于 2019-11-26T23:26:02.120 回答