////////方法源码
public List<FullTree> GetDeptTree()
{
try
{
List<FullTree> result = new List<FullTree>();
var datalist = DBManage.BASEDB.Select<T_SYS_ORGANIZATION>()
.Where(e => e.IsDel == BoolFlag.FALSE).ToList();
//获取总节点
var fdatalist = datalist.Where(e => e.ParentID == null).ToList();
foreach(var item in fdatalist)
{
//赋值
FullTree fullTree = new FullTree();
fullTree.ID = item.ID;
fullTree.Name = item.Name;
fullTree.No = item.No;
fullTree.Remark = item.Remark;
fullTree.ShortName = item.ShortName;
fullTree.Sort = item.Sort;
fullTree.ParentID = item.ParentID;
//根据他的ID获取它的子节点,
//关于我经常使用ToList() 它具有将迭代并将每个迭代项追加到新列表中。
//这具有创建消耗内存的临时列表的效果。
//我这个功能比较简单,数据量也不大,就可以随意挥霍内存了hhhh
var childdata = datalist.Where(e => e.ParentID == item.ID).ToList();
//调用子函数判断一下有没有值
var chiletree = GetDeptChildTree(childdata, datalist);
if (chiletree != null)
{
fullTree.ChildCount = chiletree.Count;
fullTree.children = chiletree;
}
else
{
fullTree.ChildCount = 0;
}
result.Add(fullTree);
}
return result;
}
catch(Exception ex)
{
return new List<FullTree>();
}
}
private List<FullTree> GetDeptChildTree(List<T_SYS_ORGANIZATION> childdata, List<T_SYS_ORGANIZATION> datalist)
{
try
{
//先判断一下还有没有值
if (childdata != null && childdata.Count > 0)
{
List<FullTree> result = new List<FullTree>();
//循环子级列表
foreach (var item in childdata)
{
//赋值
FullTree fullTree = new FullTree();
fullTree.ID = item.ID;
fullTree.Name = item.Name;
fullTree.No = item.No;
fullTree.Remark = item.Remark;
fullTree.ShortName = item.ShortName;
fullTree.Sort = item.Sort;
fullTree.ParentID = item.ParentID;
//根据他的ID获取它的子节点,
var childlist = datalist.Where(e => e.ParentID == item.ID).ToList();
//调用子函数,注意递归函数的精髓就在这里,所以说他是自己调用自己
var chiletree = GetDeptChildTree(childlist, datalist);
//判断一下有没有值
if (chiletree != null)
{
fullTree.ChildCount = chiletree.Count;
fullTree.children = chiletree;
}
else
{
fullTree.ChildCount = 0;
}
result.Add(fullTree);
}
return result;
}
else
{
return null;
}
}
catch(Exception ex)
{
return new List<FullTree>();
}
}
public List<FullTree> GetDeptTree()
{
try
{
List<FullTree> result = new List<FullTree>();
var datalist = DBManage.BASEDB.Select<T_SYS_ORGANIZATION>()
.Where(e => e.IsDel == BoolFlag.FALSE).ToList();
//获取总节点
var fdatalist = datalist.Where(e => e.ParentID == null).ToList();
foreach(var item in fdatalist)
{
//赋值
FullTree fullTree = new FullTree();
fullTree.ID = item.ID;
fullTree.Name = item.Name;
fullTree.No = item.No;
fullTree.Remark = item.Remark;
fullTree.ShortName = item.ShortName;
fullTree.Sort = item.Sort;
fullTree.ParentID = item.ParentID;
//根据他的ID获取它的子节点,
//关于我经常使用ToList() 它具有将迭代并将每个迭代项追加到新列表中。
//这具有创建消耗内存的临时列表的效果。
//我这个功能比较简单,数据量也不大,就可以随意挥霍内存了hhhh
var childdata = datalist.Where(e => e.ParentID == item.ID).ToList();
//调用子函数判断一下有没有值
var chiletree = GetDeptChildTree(childdata, datalist);
if (chiletree != null)
{
fullTree.ChildCount = chiletree.Count;
fullTree.children = chiletree;
}
else
{
fullTree.ChildCount = 0;
}
result.Add(fullTree);
}
return result;
}
catch(Exception ex)
{
return new List<FullTree>();
}
}
private List<FullTree> GetDeptChildTree(List<T_SYS_ORGANIZATION> childdata, List<T_SYS_ORGANIZATION> datalist)
{
try
{
//先判断一下还有没有值
if (childdata != null && childdata.Count > 0)
{
List<FullTree> result = new List<FullTree>();
//循环子级列表
foreach (var item in childdata)
{
//赋值
FullTree fullTree = new FullTree();
fullTree.ID = item.ID;
fullTree.Name = item.Name;
fullTree.No = item.No;
fullTree.Remark = item.Remark;
fullTree.ShortName = item.ShortName;
fullTree.Sort = item.Sort;
fullTree.ParentID = item.ParentID;
//根据他的ID获取它的子节点,
var childlist = datalist.Where(e => e.ParentID == item.ID).ToList();
//调用子函数,注意递归函数的精髓就在这里,所以说他是自己调用自己
var chiletree = GetDeptChildTree(childlist, datalist);
//判断一下有没有值
if (chiletree != null)
{
fullTree.ChildCount = chiletree.Count;
fullTree.children = chiletree;
}
else
{
fullTree.ChildCount = 0;
}
result.Add(fullTree);
}
return result;
}
else
{
return null;
}
}
catch(Exception ex)
{
return new List<FullTree>();
}
}