private void LlenarBancos_Cuentas() { //TODO: Julius: ver de que forma se hace esto mejor porque quedó muy complicado y le pega al rendimiento BancosRepository bancosRepository = new BancosRepository(); //var bancos = bancosRepository.ListAll().Where(x => x.CuentasBancarias.Count > 0); ProveedoresRepository proveedoresRepository = new ProveedoresRepository(); var proveedores = proveedoresRepository.ListAll().OrderBy(x=>x.Nombre); var proveedoresVM = proveedores.ToListOfDestination<ProveedorVM>(); foreach (var proveedorVM in proveedoresVM) { var cuentasBancarias = proveedores.Where(x => x.ProveedorId == proveedorVM.ProveedorId).FirstOrDefault().CuentasBancarias; var cuentasGrupedByBanco = cuentasBancarias.GroupBy(x => x.Banco); proveedorVM.Bancos = cuentasGrupedByBanco.Select(x => x.Key).ToListOfDestination<BancoVM>(); foreach (var bancoVM in proveedorVM.Bancos) { bancoVM.CuentasBancarias = cuentasBancarias.Where(x => x.BancoId == bancoVM.BancoId).Select(x => new CuentaBancaria() { BancoId = x.BancoId, CuentaId = x.CuentaId, NumeroCuenta = x.NumeroCuenta, NumeroDeTarjeta = x.NumeroDeTarjeta, Nombre = x.Nombre, Titular = x.Titular,Comprobante =x.Comprobante }).ToListOfDestination<CuentaBancariaVM>().ToList(); } } var jsonSerializerSettings = new JsonSerializerSettings(); jsonSerializerSettings.MaxDepth = 2; ViewBag.Proveedores = Newtonsoft.Json.JsonConvert.SerializeObject(proveedoresVM,jsonSerializerSettings); }