private async Task ReplaceEvents( Data.Outbreak outbreak, string outbreakEventType, IEnumerable <string> eventData, DateTime eventDate, params string[] codeType ) { outbreak.OutbreakEvents .Where(e => e.CdEventType == outbreakEventType) .ToList() .ForEach(e => writeContext.OutbreakEvents.Remove(e)); if (eventData == null) { return; } var tasks = eventData .Select(async e => new OutbreakEvents { IdOutbreak = outbreak.IdOutbreak, CdEventType = outbreakEventType, CdSubType = e, DsDesc = await codeRepository.GetDescription(e, codeType), DtEvent = eventDate, IdEvent = (int)await sequenceGenerator.GetNextAsync(SequenceType.OutbreakEventId), }) .ToArray(); await Task.WhenAll(tasks); foreach (var task in tasks) { outbreak.OutbreakEvents.Add(task.Result); } }