C# TreeHelper帮助类
/// /// 树结构帮助类 /// public class TreeHelper { #region 外部接口 /// /// 建造树结构 /// /// 所有的节点 /// public static List BuildTree(List allNodes) where T : TreeModel, new() { List resData = new List(); var rootNodes = allNodes.Where(x => x.ParentId == "0" || x.ParentId.IsNullOrEmpty()).ToList(); resData = rootNodes; resData.ForEach(aRootNode => { if (HaveChildren(allNodes, aRootNode.Id)) aRootNode.Children = GetChildren(allNodes, aRootNode); }); return resData; } /// /// 获取所有子节点 /// 注:包括自己 /// /// 节点类型 /// 所有节点 /// 父节点 /// 是否包括自己 /// public static List GetChildren(List allNodes, T parentNode, bool includeSelf) where T : TreeModel { List resList = new List(); if (includeSelf) resList.Add(parentNode); _getChildren(allNodes, parentNode, resList); return resList; void _getChildren(List _allNodes, T _parentNode, List _resNodes) { var children = _allNodes.Where(x => x.ParentId == _parentNode.Id).ToList(); _resNodes.AddRange(children); children.ForEach(aChild => { _getChildren(_allNodes, aChild, _resNodes); }); } } #endregion #region 私有成员 /// /// 获取所有子节点 /// /// 树模型(TreeModel或继承它的模型) /// 所有节点列表 /// 父节点Id /// private static List
扩展方法:
public static partial class Extention { /// /// 判断是否为Null或者空 /// /// 对象 /// public static bool IsNullOrEmpty(this object obj) { if (obj == null) return true; else { string objStr = obj.ToString(); return string.IsNullOrEmpty(objStr); } } /// /// 给IEnumerable拓展ForEach方法 /// /// 模型类 /// 数据源 /// 方法 public static void ForEach(this IEnumerable iEnumberable, Action func) { foreach (var item in iEnumberable) { func(item); } } }
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~