当前位置:编程学习 > C#/ASP.NET >>

简化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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,