public async Task <IActionResult> ToExcel([FromBody] Excel excel) { List <ContractSet> contractsRes = new List <ContractSet>(); IEnumerable <ContractSet> contracts = _context.ContractSet; IEnumerable <ObjectSet> objects = _context.ObjectSet; IEnumerable <ObjectSetFlat> flats = _context.ObjectSetFlat; IEnumerable <ObjectSetCar> cars = _context.ObjectSetCar; IEnumerable <ObjectSetParcel> parcels = _context.ObjectSetParcel; IEnumerable <ClientSet> clients = _context.ClientSet; IEnumerable <ClientSetIndividual> clientsIndiv = _context.ClientSetIndividual; IEnumerable <ClientSetEntity> clientsEnt = _context.ClientSetEntity; IEnumerable <UserSetAppraiser> apraisers = _context.UserSetAppraiser; IEnumerable <AppraiserContract> apraisersContract = _context.AppraiserContract; IEnumerable <UserSet> users = _context.UserSet; IEnumerable <AddressSet> addresses = _context.AddressSet; ContractSet cntr = new ContractSet(); ClientSet clnt = new ClientSet(); ClientSetIndividual indv = new ClientSetIndividual(); ClientSetEntity ent = new ClientSetEntity(); ObjectSet obj = new ObjectSet(); ObjectSetFlat flt = new ObjectSetFlat(); ObjectSetCar cr = new ObjectSetCar(); ObjectSetParcel prcl = new ObjectSetParcel(); UserSetAppraiser apr = new UserSetAppraiser(); AppraiserContract aprCntr = new AppraiserContract(); UserSet usr = new UserSet(); AddressSet adr = new AddressSet(); for (int i = 0; i < excel.Ids.Count(); i++) { cntr = contracts.FirstOrDefault(u => u.Id == excel.Ids[i]); clnt = clients.FirstOrDefault(u => u.Id == cntr.ClientId); clnt.ContractSet = null; indv = clientsIndiv.FirstOrDefault(u => u.Id == clnt.Id); ent = clientsEnt.FirstOrDefault(u => u.Id == clnt.Id); if (indv != null) { indv.IdNavigation = null; adr = addresses.FirstOrDefault(u => u.Id == indv.AddressOfResidenceId); adr.ClientSetIndividual = null; indv.AddressOfResidence = adr; clnt.ClientSetIndividual = indv; } else { ent.IdNavigation = null; adr = addresses.FirstOrDefault(u => u.Id == ent.LegalAddressId); adr.ClientSetEntity = null; ent.LegalAddress = adr; clnt.ClientSetEntity = ent; } cntr.Client = clnt; obj = objects.FirstOrDefault(u => u.Id == cntr.ObjectId); obj.ContractSet = null; flt = flats.FirstOrDefault(u => u.Id == obj.Id); cr = cars.FirstOrDefault(u => u.Id == obj.Id); prcl = parcels.FirstOrDefault(u => u.Id == obj.Id); if (flt != null) { flt.IdNavigation = null; adr = addresses.FirstOrDefault(u => u.Id == flt.AddressId); adr.ObjectSetFlat = null; flt.Address = adr; obj.ObjectSetFlat = flt; } else { if (prcl != null) { prcl.IdNavigation = null; obj.ObjectSetParcel = prcl; } else { cr.IdNavigation = null; obj.ObjectSetCar = cr; } } cntr.Object = obj; aprCntr = apraisersContract.FirstOrDefault(u => u.ContractId == cntr.Id); apr = apraisers.FirstOrDefault(u => u.Id == aprCntr.AppraiserId); apr.AppraiserContract = null; usr = users.FirstOrDefault(u => u.Id == apr.Id); usr.UserSetAppraiser = null; apr.IdNavigation = usr; aprCntr.Appraiser = apr; aprCntr.Contract = null; AppraiserContract[] arr = new AppraiserContract[1]; arr[0] = aprCntr; cntr.AppraiserContract = arr; contractsRes.Add(cntr); } var fileDownloadName = "Договоры.xlsx"; using (var package = createExcelPackage(contractsRes)) { package.SaveAs(new FileInfo(Path.Combine(@"C:\Users\user\Downloads", fileDownloadName))); } return(Ok()); }