我是靠谱客的博主 羞涩路人,最近开发中收集的这篇文章主要介绍使用递归进行商品分类~~~方便又效率,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

将数据库所有分类查询出来后进行递归处理,这是个效率问题~

#region 使用递归处理商品分类


        public  List<StartCate> cate1s;
        public  object obj = new object();

        public class StartCate
        {
            public string id { get; set; }
            public string title { get; set; }
            public string pid { get; set; }
            public string orderId { get; set; }
            public string icon { get; set; }
        }
        public class Cate
        {
            public string id { get; set; }
            public string title { get; set; }
            public string pid { get; set; }
            public string orderId { get; set; }
            public string icon { get; set; }

            public List<Cate> cates;

        }

        public void RecursionGoodsCategory() 
        {
            lock (obj)
            {
            	// 一次性将需要的分类数据全部查询出来
                string Sql_QueryGoodsCate = "select id,title,pid,orderId,icon from ksfl where isEnable = 2";
                cate1s = ExecuteSqlGetCateData(Sql_QueryGoodsCate); //查询全部分类
                if (cate1s.Count > 0) 
                {
                    var data = GetCateData("0"); //初始查询一级分类
                    var showData = data;    
                }
            }
        }

        public List<Cate> GetCateData(string id) 
        {
            List<Cate> cx = new List<Cate>();
            var data = cate1s.Where(t => t.pid == id).ToList(); //获取对应分类
            foreach (var item in data)
            {
                Cate cate = new Cate();
                cate.id = item.id;
                cate.title = item.title;
                cate.pid = item.pid;
                cate.orderId = item.orderId;
                cate.icon = item.icon;
                cate.cates = GoodsJoinCate(item.id);    //开始递归
                cx.Add(cate);
            }
            return cx;
        }

        public List<Cate> GoodsJoinCate(string id) 
        {
            return cate1s.Exists(t => t.pid == id) ? GetCateData(id) : null;    //判断是否还有下级分类
        }


		//获取SQL查询数据,不用个在意这个~
        public List<StartCate> ExecuteSqlGetCateData(string sql) 
        {
            List<StartCate> cate1s = new List<StartCate>();
            try
            {
                using (SqlConnection con = new SqlConnection(DataConn.strZjCon))
                {
                    con.Open();
                    using (SqlCommand cmd = new SqlCommand(sql, con))
                    {
                        SqlDataReader reader = cmd.ExecuteReader();
                        while (reader.Read())
                        {
                            StartCate cate1 = new StartCate();
                            if (string.IsNullOrWhiteSpace(cate1.id))
                            {
                                cate1.id = reader["id"].ToString().Trim();
                            }
                            if (string.IsNullOrWhiteSpace(cate1.title))
                            {
                                cate1.title = reader["title"].ToString().Trim();
                            }
                            if (string.IsNullOrWhiteSpace(cate1.pid))
                            {
                                cate1.pid = reader["pid"].ToString().Trim();
                            }
                            if (string.IsNullOrWhiteSpace(cate1.orderId))
                            {
                                cate1.orderId = reader["orderId"].ToString().Trim();
                            }
                            if (string.IsNullOrWhiteSpace(cate1.icon))
                            {
                                cate1.icon = reader["icon"].ToString().Trim();
                            }
                            cate1s.Add(cate1);
                        }
                        reader.Close();
                    }
                }
               
            }
            catch (Exception e)
            {
            }
            return cate1s;
        }

        #endregion

数据库数据结构:
在这里插入图片描述

– pid = 0 为一级分类,如一级分类有10个
– pid > 0 and pid <= 10 为二级分类,以此类推为第三分类…四级分类…五级分类…

此方法可以无限往下递归~

最后

以上就是羞涩路人为你收集整理的使用递归进行商品分类~~~方便又效率的全部内容,希望文章能够帮你解决使用递归进行商品分类~~~方便又效率所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部