none
Como puedo hacer dinámico mi for RRS feed

  • Pregunta

  • Buenos Días estoy haciendo un proyecto donde tengo que leer archivos txt y almacenar los datos que tiene a mi base de datos oracle, lo cual ya esta pero quisiera saber si es que puedo hacer dinamico esta parte.

    if (line.Length == 53 || arreglo[15] == "dden")
                                {
                                    List<TedefWeb.Entity.TedefPosicionLongitud> objLista = new List<TedefWeb.Entity.TedefPosicionLongitud>();

                                    objLista = Posicion_Cantidad_Longitud();

                                    TedefWeb.Entity.TedefPosicionLongitud objLongitud = new TedefWeb.Entity.TedefPosicionLongitud();

                                    List<TedefWeb.Entity.TedefPosicionLongitud> lstDent = objLista.Where(x => x.DES_NOMBRE_TABLA == "T_MOV_IAFA_LOTE_TEDEF_ODON").ToList();

                                    for (int i = 0; i <= lstDent.Count; i++)
                                    {
                                        objEntTedfDen = new TedefWeb.Entity.LoteTedefOdon();

                                        objEntTedfDen.NUM_RUC_FACTURADOR = long.Parse(obtenerValorCampor(line, lstDent[i].NUM_POSICION, lstDent[i].NUM_LONGITUD));
                                        i++;
                                        objEntTedfDen.NUM_COD_IPRESS = obtenerValorCampor(line, lstDent[i].NUM_POSICION, lstDent[i].NUM_LONGITUD);
                                        i++;
                                        objEntTedfDen.DES_TIPO_DOC_PAGO = obtenerValorCampor(line, lstDent[i].NUM_POSICION, lstDent[i].NUM_LONGITUD);
                                        i++;
                                        objEntTedfDen.DES_NUM_DOC_PAGO = obtenerValorCampor(line, lstDent[i].NUM_POSICION, lstDent[i].NUM_LONGITUD);
                                        i++;
                                        objEntTedfDen.NUM_CORRELATIVO_ATEN = int.Parse(obtenerValorCampor(line, lstDent[i].NUM_POSICION, lstDent[i].NUM_LONGITUD));
                                        i++;
                                        objEntTedfDen.NUM_CORRELA_SERV_ODON = int.Parse(obtenerValorCampor(line, lstDent[i].NUM_POSICION, lstDent[i].NUM_LONGITUD));
                                        i++;
                                        objEntTedfDen.DES_COD_PIEZA_DENTARIA = obtenerValorCampor(line, lstDent[i].NUM_POSICION, lstDent[i].NUM_LONGITUD);
                                        i++;
                                        objEntTedfDen.DES_SUPERFIC_DENTARIA_MESIA = obtenerValorCampor(line, lstDent[i].NUM_POSICION, lstDent[i].NUM_LONGITUD);
                                        i++;
                                        objEntTedfDen.DES_SUPERFIC_DENTARIA_LINGU = obtenerValorCampor(line, lstDent[i].NUM_POSICION, lstDent[i].NUM_LONGITUD);
                                        i++;
                                        objEntTedfDen.DES_SUPERFIC_DENTARIA_DISTAL = obtenerValorCampor(line, lstDent[i].NUM_POSICION, lstDent[i].NUM_LONGITUD);
                                        i++;
                                        objEntTedfDen.DES_SUPERFIC_DENTARIA_VESTIB = obtenerValorCampor(line, lstDent[i].NUM_POSICION, lstDent[i].NUM_LONGITUD);
                                        i++;
                                        objEntTedfDen.DES_SUPERFIC_DENTARIA_OCLUS = obtenerValorCampor(line, lstDent[i].NUM_POSICION, lstDent[i].NUM_LONGITUD);
                                        i++;
                                        objEntTedfDen.DES_SUPERFIC_DENTARIA_TPIEZA = obtenerValorCampor(line, lstDent[i].NUM_POSICION, lstDent[i].NUM_LONGITUD);
                                        i++;
                                        objEntTedfDen.DES_SUPERFIC_DENTARIA_PALAT = obtenerValorCampor(line, lstDent[i].NUM_POSICION, lstDent[i].NUM_LONGITUD);
                                        i++;
                                        objEntTedfDen.DES_SUPERFIC_DENTARIA_CERVI = obtenerValorCampor(line, lstDent[i].NUM_POSICION, lstDent[i].NUM_LONGITUD);
                                        i++;
                                        objEntTedfDen.DES_SUPERFIC_DENTARIA_INCISA = obtenerValorCampor(line, lstDent[i].NUM_POSICION, lstDent[i].NUM_LONGITUD);
                                        i++;

                                        ListaDen.Add(objEntTedfDen);
     }

    Espero su ayuda.

    Gracias

    jueves, 22 de febrero de 2018 16:20

Respuestas

  • hola

    pero si lstDent es una lista de una entidad porque no usas el foreach ?

    entonces seria

    foreach(var item in lstDent){
    
       var objEntTedfDen = new TedefWeb.Entity.LoteTedefOdon();
    
       objEntTedfDen.NUM_RUC_FACTURADOR = long.Parse(obtenerValorCampor(line, item.NUM_POSICION, item.NUM_LONGITUD));
    
       //resto codigo
    
        ListaDen.Add(objEntTedfDen);
    
    }


    igualmente no se que hace el obtenerValorCampor()

    recuerda definir una nueva instancia en cada iteracion

    sino la otra tambien podrias ser utilizar automapper

    AutoMapper

    este permite mapear una entidad en otra, y si las propiedades coinciden las asigna directamente, pero en tu caso se complicaria porque usas este obtenerValorCampor()

    saludios


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 22 de febrero de 2018 16:32

Todas las respuestas

  • hola

    pero si lstDent es una lista de una entidad porque no usas el foreach ?

    entonces seria

    foreach(var item in lstDent){
    
       var objEntTedfDen = new TedefWeb.Entity.LoteTedefOdon();
    
       objEntTedfDen.NUM_RUC_FACTURADOR = long.Parse(obtenerValorCampor(line, item.NUM_POSICION, item.NUM_LONGITUD));
    
       //resto codigo
    
        ListaDen.Add(objEntTedfDen);
    
    }


    igualmente no se que hace el obtenerValorCampor()

    recuerda definir una nueva instancia en cada iteracion

    sino la otra tambien podrias ser utilizar automapper

    AutoMapper

    este permite mapear una entidad en otra, y si las propiedades coinciden las asigna directamente, pero en tu caso se complicaria porque usas este obtenerValorCampor()

    saludios


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 22 de febrero de 2018 16:32
  • Buenas gracias por comentar.

    Respecto a tu duda sobre obtenerValorCampor() lo que hace es traerme el un valor del archivo de texto deacuerdo a su posicion y longitud.

    Por ejemplo el NUM_RUC_FACTURADOR en el archivo de texto esta en la posicion 0 y tiene una longitud de 11 y esta dinamico.

    Lo que quiero lograr es algo parecido a esto:

     objEntTedfDen.+lstDent [i].DES_NOMBRE_CAMPO= long.Parse(obtenerValorCampor(line, lstDent[i].NUM_POSICION, lstDent[i].NUM_LONGITUD));

    Pero no se me ocurre una forma de como hacerlo porque asi mientras avance el valor de "i" los nombres del campo se irán poniendo solos ya que en DES_NOMBRE_CAMPO tengo todos los nombres de la tabla que voy a insertar pero en el objEntTedfDen se tienen que insertar.

    Espero me hayas entendido soy nuevo desarrollando aun.

     
    jueves, 22 de febrero de 2018 16:48