public async Task <IActionResult> ExportToCsv([FromRoute] Guid userId) { try { var applications = _repository.GetJobApplicationsForUser(userId).OrderByDescending(j => j.ApplicationDate); var results = await _mapper.ProjectTo <JobApplicationDTO>(applications).ToListAsync(); var stream = new MemoryStream(); using (var writer = new StreamWriter(stream, leaveOpen: true)) { var csv = new CsvWriter(writer, CultureInfo.InvariantCulture); csv.WriteRecords(results); } stream.Position = 0; return(File(stream, "text/csv", "jobapplications.csv")); } catch { // TODO: Log exception return(BadRequest()); } }