none
bucle no termina RRS feed

  • Pregunta

  • Que tal desarrolladores, tengo un problema en .net tengo unas consulta en linQ y el problema que se me presento ahora que busca datos en la BD es que si en la base de datos no hay algun dato busca al infinito y por ende no carga la vista, como puedo hacer un quiebre de este ciclo de manera que si no encuentra datos de este mes que busque en el mes anterior o en pocas palabras que busque el ultimo dato cargado? he aqui el codigo de mi controlador

     var mintec = cm.tb_min.
                             Where(filtro, fin, inicio).
                             Select(v => new { // select en Linq con sintaxis lamda
                                 F_h1 = v.F_h1,
                                 F_h2 = v.F_h2,
                                 F_h3 = v.F_h3,
                                 F_h4 = v.F_h4,
                                 F_h5 = v.F_h5,
                                 F_h6 = v.F_h6,
                                 F_h7 = v.F_h7,
                                 F_h8 = v.F_h8,
                                 F_h9 = v.F_h9,
                                 F_h10 = v.F_h10,
                                 F_h11 = v.F_h11,
                                 F_h12 = v.F_h12,
                                 F_h13 = v.F_h13,
                                 F_h14 = v.F_h14,
                                 F_h15 = v.F_h15,
                                 F_h16 = v.F_h16,
                                 F_h17 = v.F_h17,
                                 F_h18 = v.F_h18,
                                 F_h19 = v.F_h19,
                                 F_h20 = v.F_h20,
                                 F_h21 = v.F_h21,
                                 F_h22 = v.F_h22,
                                 F_h23 = v.F_h23,
                                 F_h24 = v.F_h24,
                             }).ToList();
    
               
    
                while (!mintec.Any()) // bucle hasta que encuentre datos
                {
                    inicio = inicio.AddMonths(-1);// resta los meses para que pueda continuar buscando datos
                    //fin = fin.AddMonths(-1);
    
                    inicio = inicio.AddMonths(-1);
                    int cantdays_ciclo = DateTime.DaysInMonth(inicio.Year, inicio.Month);// obtiene la cantidad de dias del mes en el que se debe buscar datos
                    fin = new DateTime(inicio.Year, inicio.Month, cantdays_ciclo);
    
                    mintec = cm.tb_min.
                        Where(filtro, fin, inicio).
                        Select(v => new
                        {
                            F_h1 = v.F_h1,
                            F_h2 = v.F_h2,
                            F_h3 = v.F_h3,
                            F_h4 = v.F_h4,
                            F_h5 = v.F_h5,
                            F_h6 = v.F_h6,
                            F_h7 = v.F_h7,
                            F_h8 = v.F_h8,
                            F_h9 = v.F_h9,
                            F_h10 = v.F_h10,
                            F_h11 = v.F_h11,
                            F_h12 = v.F_h12,
                            F_h13 = v.F_h13,
                            F_h14 = v.F_h14,
                            F_h15 = v.F_h15,
                            F_h16 = v.F_h16,
                            F_h17 = v.F_h17,
                            F_h18 = v.F_h18,
                            F_h19 = v.F_h19,
                            F_h20 = v.F_h20,
                            F_h21 = v.F_h21,
                            F_h22 = v.F_h22,
                            F_h23 = v.F_h23,
                            F_h24 = v.F_h24,
                        }).ToList();
    
                }
                if (mintec.Any())
                {
                    valormes = mintec.Sum(total => total.F_h1 + total.F_h2 + total.F_h3 + total.F_h4 + total.F_h5 + total.F_h6 + total.F_h7 + total.F_h8 + total.F_h9 + total.F_h10
                        + total.F_h11 + total.F_h12 + total.F_h13 + total.F_h14 + total.F_h15 + total.F_h16 + total.F_h17 + total.F_h18 + total.F_h19 + total.F_h20
                        + total.F_h21 + total.F_h22 + total.F_h23 + total.F_h24);
    
                    today1 = inicio; // almaceno en today1 la fecha que contiede datos para que pueda ser usada por los demas metodos
    
                }
                else
                {
                    valormes = 0;
                }
    
    
    
    
    
                return Convert.ToDouble(valormes).ToString("N", nfi); // "N" representa una cifra numerica, nfi el formato 
    
    
            }



    Joel Baez

    martes, 10 de abril de 2018 12:22

Respuestas