Principales respuestas
Como puedo hacer dinámico mi for

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
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
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- Marcado como respuesta Pablo RubioModerator domingo, 25 de febrero de 2018 10:48
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
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- Marcado como respuesta Pablo RubioModerator domingo, 25 de febrero de 2018 10:48
-
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.
- Editado Raúl Rojas Cotrina jueves, 22 de febrero de 2018 16:57