Visual CSharp .NET - recorrigo en foreach

 
Vista:

recorrigo en foreach

Publicado por alexis (59 intervenciones) el 26/02/2015 23:00:48
buenas tardes que tal, tengo problemas en mi aplicacion web echa en aspx en c # visual estudio 2008


el data table tiene 24 mil registros el terminar ese ciclo me esta demorando casi 20 minutos
hay alguna forma de mejorar eso?

este es el codigo que tengo

foreach (DataRow drf in dtPODetail.Rows)
{
LogRef = new adLogTrxRef();
LogRef.no_trx = int.Parse(Session["SPno_trx"].ToString());
LogRef.linea_no = 0;
LogRef.departamento = drf["style_dept_code"].ToString().Trim();
LogRef.no_po = drf["no_po"].ToString().Trim();
LogRef.status_po_ref = drf["status_po_ref"].ToString().Trim();
LogRef.bo_po = drf["bo_po"].ToString().Trim();
LogRef.style_code = drf["style_code"].ToString().Trim();
LogRef.style_color_code = drf["style_color_code"].ToString().Trim();
LogRef.style_dim_code = drf["style_dim_code"].ToString().Trim();
LogRef.no_item = drf["item_no"].ToString().Trim();
LogRef.bodega = drf["bodega"].ToString().Trim();
LogRef.costo_unitario = decimal.Parse(drf["costo_unitario"].ToString().Trim());
dQty = decimal.Parse(drf["qty_ordered"].ToString());
LogRef.qty_ordered = Convert.ToInt32(dQty);
LogRef.temporada_cod_compra = drf["temporada_cod_compra"].ToString().Trim();
LogRef.temporada_ano_compra = drf["temporada_ano_compra"].ToString().Trim();
LogRef.comentario_po = drf["comentario_po"].ToString().Trim();

if (drf["etd_orig"] != null && drf["etd_orig"].ToString().Trim() != "")
{
LogRef.etd_orig = int.Parse(drf["etd_orig"].ToString().Trim());
}

if (drf["etd_rev"] != null && drf["etd_rev"].ToString().Trim() != "")
{
LogRef.etd_rev = int.Parse(drf["etd_rev"].ToString().Trim());
}


LogRef.temporada_cod_vta = drf["temporada_cod_vta"].ToString().Trim();
LogRef.temporada_ano_vta = drf["temporada_ano_vta"].ToString().Trim();
LogRef.no_proveedor = drf["vend_no"].ToString().Trim();
LogRef.pty = drf["pty"].ToString().Trim();
LogRef.entrada_no = drf["entrada_no"].ToString().Trim();
LogRef.status_entradas = drf["status_entradas"].ToString().Trim();
LogRef.country_shipment_ref = drf["country_shipment_ref"].ToString().Trim();
LogRef.style_name = drf["style_name"].ToString().Trim();
LogRef.size = drf["talla"].ToString().Trim();
LogRef.status_sw = lnLogicData.StatusNoBooked(ref errorInfo);
if (!string.IsNullOrEmpty(drf["cubicaje"].ToString()))
LogRef.cbm = decimal.Parse(drf["qty_ordered"].ToString()) * decimal.Parse(drf["cubicaje"].ToString());
else
LogRef.cbm = 0;
LogRef.id_poordlin = int.Parse(drf["id_poordlin"].ToString());
LogTRX.TrxRefCollection.Add(LogRef);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

recorrigo en foreach

Publicado por Horroroso (1 intervención) el 17/04/2015 16:39:23
Piensa... es realmente necesario mostrar 25000 registros de una vez? que pasa si solo mustro los 1000 mas importantes (los primeros 1000 o los ultimos 1000) y hago una paginacion que vaya mostrando de 1000 en 1000. Ejemplos de paginacion hay muchos.

Aparte de esto, puedes usar un DataReader en lugar de un dataTable, es mucho mas rapido.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar