Не понимаю, почему так. Есть вызов асинхронного метода
tasks = request.Sets
.Select(x => _service.MethodAsync(...))
.ToArray();
Также приведу объявление вызываемой функции:
public async Task<IReadOnlyDictionary<long, TValue>> MethodAsync(...)
Как видно, она возвращает
Task<IReadOnlyDictionary<long, TValue>>
при этом, далее есть блок, в котором мы дожидаемся тред и здесь есть непонятная для меня вещь:
cache = (await Task.WhenAll(tasks))
.Select((x, i) => new KeyValuePair<int, IReadOnlyDictionary<long, TValue>>(request.Sets[i].Id, x))
.ToDictionary(x => x.Key, x => x.Value);
Rider подсказывает, что тип x -- IReadOnlyDictionary<long, TValue>>, а тип i -- int. Таким образом, мне непонятно, почему Select ожидает делегата с двумя аргументами, вместо делегата с одним аргументом типа IReadOnlyDictionary<long, TValue>>?
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости