public async Task <IActionResult> ExportUnchurchedToExcel() { var applicationDbContext = _context.Children .Where(c => c.VBSId == this.CurrentVBSId && c.VBS.TenantId == this.TenantId) .OrderBy(c => c.GuardianLastName) .ThenBy(c => c.Address1) .ThenBy(c => c.GradeCompleted); List <Child> dbChildren = await applicationDbContext.ToListAsync(); List <UnchurchedReportViewModel2> vms = new List <UnchurchedReportViewModel2>(); Dictionary <string, UnchurchedReportViewModel2> vmDictionary = new Dictionary <string, UnchurchedReportViewModel2>(); foreach (Child dbChild in dbChildren) { string church = dbChild.HomeChurch; if (!dbChild.AttendHostChurch && ChurchHelper.IsNoneChurch(church)) { if (!vmDictionary.ContainsKey(dbChild.GuardianFirstName + " " + dbChild.GuardianLastName)) { UnchurchedReportViewModel2 vm = new UnchurchedReportViewModel2(); vm.ChildrenNamesAndGrades = dbChild.FirstName + " " + dbChild.LastName + "(" + dbChild.GradeCompleted + ")"; vm.Address = dbChild.Address1 + ", "; if (!string.IsNullOrEmpty(dbChild.Address2)) { vm.Address += dbChild.Address2 + ", "; } vm.Address += dbChild.City + ", "; vm.Address += dbChild.State + ", "; vm.Address += dbChild.Zip; vm.GuardianName = dbChild.GuardianFirstName + " " + dbChild.GuardianLastName; vm.GuardianRelationship = dbChild.GuardianChildRelationship; vm.GuardianEmail = dbChild.GuardianEmail; vm.GuardianPhone = dbChild.GuardianPhone; vm.ChurchSpecified = dbChild.HomeChurch; vm.InvitedBy = dbChild.InvitedBy; vmDictionary.Add(vm.GuardianName, vm); } else { UnchurchedReportViewModel2 vm = vmDictionary[dbChild.GuardianFirstName + " " + dbChild.GuardianLastName]; vm.ChildrenNamesAndGrades += ", " + dbChild.FirstName + " " + dbChild.LastName + "(" + dbChild.GradeCompleted + ")"; } } } foreach (UnchurchedReportViewModel2 vm2 in vmDictionary.Values) { vms.Add(vm2); } string tenantName = _context.Tenants .Where(t => t.Id == this.TenantId).First().Name; string theme = _context.VBS .Where(v => v.Id == this.CurrentVBSId).First().ThemeName; string fileName = tenantName + " - " + theme + " - " + "Unchurched Children Export.xlsx"; byte[] filecontent = ExcelExportHelper.ExportUnchurchedExcel(vms); return(File(filecontent, ExcelExportHelper.ExcelContentType, fileName)); }