C # adicionar resultados de métodos assíncronos quando todos terminar

Eu tenho um método assíncrono que recebe umList<long> de identificações de componentes para uma identificação de carro. Quero obter identificações de componentes para várias centenas de carros de forma assíncrona, então escrevi o método abaixo. Meu objetivo é realmente somar os resultados de todosGetAllComponentIdsForCar tarefas e retorne-as do método abaixo.

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
}

Como eu faço isso?

Nota - Estou procurando algo semelhante ao angularq.all que simplesmente retorna uma matriz de todos os resultados da tarefa (/ promessa) ao terminar.

Eu consegui obter resultados de tarefas assíncronas em C # antes, mas isso envolvia tornar uma matriz o comprimento das tarefas esperadas e isso parece uma maneira horrível de fazê-lo.

Tentei ler a documentação e as perguntas da Microsoft aqui, mas tudo o que vejo são argumentos sobre WaitAll vs WhenAll.

Editar:

questionAnswers(1)

yourAnswerToTheQuestion