I'm using Task.WhenAll to call multiple async requests with different parameters to get patients of various pharmacies by selecting patient ids of that pharmacy.
And I want to add this data to one list and then map it to other models.
Here is my code.
var patients = new List<PatientDTO>();
await Task.WhenAll(
pharmacyIds.Select(async pharmacyId =>
patients.AddRange(await _patientService.GetPatientsByClientIds(pharmacyId, recipes
.Where(x => x.PharmacyId == pharmacyId)
.Select(x => x.PatientId)))));
I'm getting this data paginated in my request, and my page size is often 50
most of the time, this works correctly, but sometimes it throws an exception with the message:
Destination array was not long enough. Check the destination index, length, and the array's lower bounds. (Parameter 'destinationArray').
Here is some more information about the exception.
at System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable)
at System.Collections.Generic.List`1.Insert(Int32 index, T item)
at System.Collections.Generic.List`1.InsertRange(Int32 index, IEnumerable`1 collection)
at Coach.Domain.Queries.GetRecipeLogsQueryHandler.<>c__DisplayClass4_0.<<Handle>b__14>d.MoveNext()
Where is my mistake, and how can I solve this?
- NOTE: I want multiple requests to be async, and I don't want to call them in sequence.