code/Athena0.0.1/tool/DataTableTree.cs

(完整代码) 1KB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Athena.tool
{
    public class DataTableTree
    {
        public string id { get; set; }
        public string ParentId { get; set; }
        public bool HasChildren { get; set; }
        public int Level { get; set; }
        public object Data { get; set; }


        public static void AppendChildren<TData>(List<TData> source, ref List<DataTableTree> ret, string parentId, int nodeLevel, Func<TData, string> idSelector, Func<TData, string> parentIdSelector, Func<TData, int?> sortCodeSelector = null)
        {
            var entities = source.Where(a => parentIdSelector(a) == parentId);

            if (sortCodeSelector != null)
            {
                entities = entities.OrderBy(a => sortCodeSelector(a)).ToList();
            }
            try
            {
                foreach (var entity in entities)
                {
                    DataTableTree tree = new DataTableTree();
                    tree.id = idSelector(entity);
                    tree.ParentId = parentId;
                    tree.HasChildren = source.Any(a => parentIdSelector(a) == idSelector(entity));
                    tree.Level = nodeLevel;
                    tree.Data = entity;
                    ret.Add(tree);
                    AppendChildren(source, ref ret, idSelector(entity), nodeLevel + 1, idSelector, parentIdSelector, sortCodeSelector);
                }
            }
            catch (Exception ex)
            {
                string str = ex.Message;
            }
        }
    }
}

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。