这是我的代码:
public string[] RegresaprecionombreyId(DataTable tablalm, DataTable tablaep, string producto, string cliente, DateTime fecha)
{
producto = ((int)Convert.ToDecimal(producto)).ToString();
string precio = "0.00", preciobase = "0.00", nombre = "producto no encontrado", id = "00000000-0000-0000-0000-000000000000";
if (tablaep.Rows.Count > 0)
{
string consulta = "ope_pro=" + producto + " and cliente=" + cliente + " and '" + fecha.ToString("yyyy-MM-dd") + "' >= inicio and '" + fecha.ToString("yyyy-MM-dd") + "' <= fin";
DataRow[] filas = tablaep.Select(consulta);
if (filas.Length > 0)
{
id = filas[0]["id"].ToString();
nombre = filas[0]["nombre"].ToString();
precio = filas[0]["precio"].ToString();
preciobase = filas[0]["preciobase"].ToString();
return new string[] { precio, nombre, id, preciobase };
}
}
if (tablalm.Rows.Count > 0)
{
string consulta = "ope_pro='" + producto + "'";
DataRow[] filas = tablalm.Select(consulta);
if (filas.Length > 0)
{
id = filas[0]["id"].ToString();
nombre = filas[0]["nombre"].ToString();
DateTime fechatabla = Convert.ToDateTime(filas[0]["fechanue"].ToString());
if (fecha >= fechatabla)
precio = filas[0]["precionue"].ToString();
else
precio = filas[0]["precio"].ToString();
return new string[] { precio, nombre, id, precio };
}
}
return new string[] { precio, nombre, id, preciobase };
}
我使用了一些DataTable.Select(查询)
使用此方法的其他代码是循环并使用DataTable.Select获取帐户的id,输入此方法并在2表再次使用DataTable.Select(query) 第一张表是每个帐户每个产品的价格不同的表格 例如
account product price
1 1 10
1 2 11
1 3 12
2 1 11
2 2 12
2 3 13
如果现在没有出现在这个DataTable中,我会在其他表格中找到这种格式
product price
1 10.5
2 11.5
3 11.5
第一个数据表有17569行;第二个数据表有597行。
那么当我打电话给这个方法时
RegresaprecionombreyId(DataTable tablalm, DataTable tablaep, string producto, string cliente, DateTime fecha)
这需要大约3或4秒,每次我调用它,我有一个大约3245条记录的循环,所以3245(记录)* 3(秒)这超过2小时。我怎样才能改善这段时间?