简化for循环代码求助
我做的是无限级别栏目,现在遇到前台文章查询问题,就是当我点击一级栏目,把所有的他的子级栏目的问题都显示出来,弟弟我笨只能用for循环查询了.但是代码量太大了.我有点不甘心.所以请求大侠们.
我的数据库设置是
栏目表是
id 栏目名 子栏目ID
1 首页 0
2 首页子夜 1
...
废话不多说了.如果有简便的算法请晒晒,谢谢了。如果没有请帮我把一下代码给简化下吧.谢谢哥哥姐姐了。
//判断一级类目以及子分类是否在选择状态
if (DropDownList1.SelectedItem.Text == "请选择" && DropDownList2.SelectedItem.Text == "不设置子级分类")
{
//输出错误信息
Response.Write("<script language ='javascript'>alert('请选择查询条件!一级栏目,二及栏目必选一个');history.go(-1);</script>");
}
//判断二级别栏目是否为空
else if (DropDownList1.SelectedItem.Text != "请选择" || DropDownList2.SelectedItem.Text !="不设置子级分类")
{
int type = int.Parse(DropDownList1.Text);
if (DropDownList2.SelectedItem.Text != "不设置子级分类")
{
type = int.Parse(DropDownList2.Text);
}
IList<Classes> classesList = ClassesService.GetIdClasses(type);
sql = "SELECT * from [文章] WHERE [类别]=" + type;
for (int i = 0; i < classesList.Count; i++)
{
sql += " or [类别]=" + classesList[i].ClassId;
IList<Classes> classesList1 = ClassesService.GetIdClasses(classesList[i].ClassId);
if (classesList1.Count > 0)
{
for (int j = 0; j < classesList1.Count; j++)
{
sql += " or [类别]=" + classesList1[j].ClassId;
IList<Classes> classesList2 = ClassesService.GetIdClasses(classesList1[j].ClassId);
if (classesList2.Count > 0)
{
for (int c = 0; c < classesList2.Count; c++)
{
sql+=" or [类别]="+classesList2[j].ClassId;
IList<Classes> classesList3 = ClassesService.GetIdClasses(classesList2[c].ClassId);
if (classesList3.Count > 0)
{
for (int d = 0; d < classesList3.Count; d++)
{
sql += " or [类别]=" + classesList3[d].ClassId;
IList<Classes> classesList4 = ClassesService.GetIdClasses(classesList3[d].ClassId);
if (classesList4.Count > 0)
{
for (int f = 0; f < classesList4.Count; f++)
{
sql += " or [类别]=" + classesList4[f].ClassId;
IList<Classes> classesList5 = ClassesService.GetIdClasses(classesList4[f].ClassId);
if (classesList5.Count > 0)
{
for (int g = 0; g < classesList5.Count; g++)
{
sql += " or [类别]=" + classesList5[g].ClassId;
IList<Classes> classesList6 = ClassesService.GetIdClasses(classesList5[g].ClassId);
if (classesList6.Count > 0)
{
for (int t = 0; t < classesList6.Count; t++)
{
sql += " or [类别]=" + classesList6[t].ClassId;
IList<Classes> classesList7 = ClassesService.GetIdClasses(classesList6[t].ClassId);
if (classesList7.Count > 0)
{
for (int y = 0; y < classesList7.Count; y++)
{
sql += " or [类别]=" + classesList7[y].ClassId;
IList<Classes> classesList8 = ClassesService.GetIdClasses(classesList7[y].ClassId);
if (classesList8.Count > 0)
{
for (int q = 0; q < classesList8.Count; q++)
{
sql += " or [类别]=" + classesList8[q].ClassId;
IList<Classes> classesList9 = ClassesService.GetIdClasses(classesList8[q].ClassId);
if (classesList9.Count > 0)
{
for (int w = 0; w < classesList9.Count; w++)
{
sql += " or [类别]=" + classesList9[w].ClassId;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
Bind(sql);
--------------------编程问答-------------------- up 帮顶 --------------------编程问答-------------------- 谢谢了,等待大侠们。满意的答案
补充:.NET技术 , ASP.NET