using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Yi.Framework.Common.Models; namespace Yi.Framework.Common.Helper { public static class TreeHelper { public static IList SetTree(IList list, Action action = null) { if (list != null && list.Count > 0) { IList result = new List(); long pid = list.Min(m => (m as ITreeModel).parentId); IList t = list.Where(m => (m as ITreeModel).parentId == pid).ToList(); foreach (T model in t) { if (action != null) { action(model); } result.Add(model); var item = (model as ITreeModel); IList children = list.Where(m => (m as ITreeModel).parentId == item.id).ToList(); if (children.Count > 0) { SetTreeChildren(list, children, model, action); } } return result.OrderBy(m => (m as ITreeModel).sort).ToList(); } return null; } private static void SetTreeChildren(IList list, IList children, T model, Action action = null) { var mm = (model as ITreeModel); mm.children = new List(); foreach (T item in children) { if (action != null) { action(item); } mm.children.Add(item); var _item = (item as ITreeModel); IList _children = list.Where(m => (m as ITreeModel).parentId == _item.id).ToList(); if (_children.Count > 0) { SetTreeChildren(list, _children, item, action); } } mm.children = mm.children.OrderBy(m => (m as ITreeModel).sort).ToList(); } } }