C # добавить результаты асинхронных методов, когда все закончено
У меня есть асинхронный метод, который получаетList<long>
идентификаторов компонентов для идентификатора автомобиля. Я хочу получить идентификаторы компонентов для нескольких сотен автомобилей асинхронно, поэтому я написал метод ниже. Моя цель - на самом деле сложить результаты всехGetAllComponentIdsForCar
задачи и вернуть их из метода ниже.
public async Task<List<long>> GetListOfComponentIds(List<long> carIds)
{
List<Task> tasksList = new List<Task>();
foreach (var carId in carIds)
{
Task<List<long>> getComponentIds = GetAllComponentIdsForCar(carId);
tasksList.Add(getComponentIds);
}
await Task.WhenAll(tasksList);
//List<long> sumOfAllTaskResults...or array...or something
}
Как мне это сделать?
Примечание - я ищу что-то похожее на Angular'sq.all который просто возвращает массив всех результатов задачи (/ обещания) по завершении.
Мне уже удавалось получить результаты асинхронных задач в C #, но это включало создание массива ожидаемых задач, и это просто ужасный способ сделать это.
Я попытался прочитать документацию и вопросы Microsoft здесь, но все, что я вижу, это аргументы о WaitAll против WhenAll.
Редактировать: