概述
将数据库所有分类查询出来后进行递归处理,这是个效率问题~
#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 为二级分类,以此类推为第三分类…四级分类…五级分类…
此方法可以无限往下递归~
最后
以上就是羞涩路人为你收集整理的使用递归进行商品分类~~~方便又效率的全部内容,希望文章能够帮你解决使用递归进行商品分类~~~方便又效率所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复