语言:C#
平台:WEB 我现在用了3个FOR 分别生成HyperLink 大类,小类,详细类,这样实现了效果,可是速度慢的是一塌糊涂,请问这个应该怎么优化呢?
for (int i = 0; i < proo.Select().Rows.Count; i++)
{
HyperLink hy = new HyperLink(); if (i == 0)
{
hy.Text = proo.Select().Rows[i]["Name"].ToString() + "</BR>"; }
else
{
hy.Text = "</BR>" + "</BR>" + proo.Select().Rows[i]["Name"].ToString() + "</BR>";
} hy.CssClass = "reg111";
Panel1.Controls.Add(hy);
pro1.da = proo.Select().Rows[i]["Name"].ToString();
for (int ix = 0; ix < proo1.Select().Rows.Count; ix++)
{
if (proo1.Select().Rows[ix]["da"].ToString() == proo.Select().Rows[i]["Name"].ToString())
{
HyperLink hy1 = new HyperLink();
hy1.Text = proo1.Select().Rows[ix]["xiao"].ToString() + "</BR>";
hy1.CssClass = "menu";
Panel1.Controls.Add(hy1); for (int ixx = 0; ixx < proo2.Select().Rows.Count; ixx++)
{
if (proo2.Select().Rows[ixx]["xiao"].ToString() == proo1.Select().Rows[ix]["xiao"].ToString())
{
HyperLink hy12 = new HyperLink();
hy12.Text = proo2.Select().Rows[ixx]["xx"].ToString() + "</BR>";
hy12.CssClass = "bai12";
Panel1.Controls.Add(hy12); } }
} } }
平台:WEB 我现在用了3个FOR 分别生成HyperLink 大类,小类,详细类,这样实现了效果,可是速度慢的是一塌糊涂,请问这个应该怎么优化呢?
for (int i = 0; i < proo.Select().Rows.Count; i++)
{
HyperLink hy = new HyperLink(); if (i == 0)
{
hy.Text = proo.Select().Rows[i]["Name"].ToString() + "</BR>"; }
else
{
hy.Text = "</BR>" + "</BR>" + proo.Select().Rows[i]["Name"].ToString() + "</BR>";
} hy.CssClass = "reg111";
Panel1.Controls.Add(hy);
pro1.da = proo.Select().Rows[i]["Name"].ToString();
for (int ix = 0; ix < proo1.Select().Rows.Count; ix++)
{
if (proo1.Select().Rows[ix]["da"].ToString() == proo.Select().Rows[i]["Name"].ToString())
{
HyperLink hy1 = new HyperLink();
hy1.Text = proo1.Select().Rows[ix]["xiao"].ToString() + "</BR>";
hy1.CssClass = "menu";
Panel1.Controls.Add(hy1); for (int ixx = 0; ixx < proo2.Select().Rows.Count; ixx++)
{
if (proo2.Select().Rows[ixx]["xiao"].ToString() == proo1.Select().Rows[ix]["xiao"].ToString())
{
HyperLink hy12 = new HyperLink();
hy12.Text = proo2.Select().Rows[ixx]["xx"].ToString() + "</BR>";
hy12.CssClass = "bai12";
Panel1.Controls.Add(hy12); } }
} } }
2.如果proo.Select()的结果要反复使用的话,预先保存它的结果,不要小看这样的操作浪费的时间。我如果是你的话,只在循环开始前执行一次,然后就一直使用了。
for (int i = 0; i < proo.Rows.Count; i++) //去掉Select()优化后代码: int nameIndex = proo.Columns.IndexOf("Name");
int xiaoIndex = proo.Columns.IndexOf("xiao");
int daIndex = proo.Columns.IndexOf("da"); for (int i = 0; i < proo.Rows.Count; i++)
{
HyperLink hy = new HyperLink(); if (i == 0)
{
hy.Text = proo.Rows[i][nameIndex].ToString() + "</BR>";
}
else
{
hy.Text = "</BR></BR>" + proo.Rows[i][nameIndex].ToString() + "</BR>";
} hy.CssClass = "reg111";
Panel1.Controls.Add(hy); pro1.da = proo.Rows[i][nameIndex].ToString(); for (int ix = 0; ix < proo1.Rows.Count; ix++)
{
if (proo1.Rows[ix][daIndex].ToString() == proo.Rows[i][nameIndex].ToString())
{
HyperLink hy1 = new HyperLink();
hy1.Text = proo1.Rows[ix][xiaoIndex].ToString() + "</BR>";
hy1.CssClass = "menu";
Panel1.Controls.Add(hy1); for (int ixx = 0; ixx < proo2.Rows.Count; ixx++)
{
if (proo2.Rows[ixx][xiaoIndex].ToString() == proo1.Rows[ix][xiaoIndex].ToString())
{
HyperLink hy12 = new HyperLink();
hy12.Text = proo2.Rows[ixx][daIndex].ToString() + "</BR>";
hy12.CssClass = "bai12";
Panel1.Controls.Add(hy12);
}
}
}
}
}
前台读取后,可以很方便的完成显示。或者生成XML也是一样的。有些东东在检索的时候就应该本着客户端处理方便的意图由数据库去完成整理数据的工作。
这个怎么可能去掉Select() ? Select() 是我写的一个SQL查询语句!