我有一个IAsyncEnumerable
,我需要将所有结果存储在某个数据库中,但我还需要对第一个项目应用一些特殊处理.我是这样做的:
var someAsyncEnumerable = GetSomeAsyncEnumerable(cancellationToken);
var firstValue = await someAsyncEnumerable.FirstOrDefaultAsync(cancellationToken);
if (firstValue is not null)
{
// log something about first value
await HandleItem(fitstValue);
}
await foreach(var value in someAsyncEnumerable.Skip(1).WithCancellation(cancellationToken))
{
await HandleItem(value);
}
private async Task HandleItem(Item item)
{
// store item in DB
}
使用这样的代码,我收到了一个警告:
可能的多重枚举
我想知道,在这种情况下,这只是一个我可以完全忽略的警告,还是我对可枚举数的使用是错误的?
让我们假设我的IAsyncEnumerable
不应该被枚举两次,因为它的效率很低,甚至是崩溃.