C#生成树形结构泛型类


C#生成树形结构泛型类,使用方法: ToTree<ShowMessageUpdatesTableTreeViewModel>.ToDo(models) 

public class ToTree<T> where T : IToTreeModel
{
    public static List<T> ToDo(List<T> models)
    {
        var dtoMap = new Dictionary<int, T>();
        foreach (var item in models)
        {
            dtoMap.Add(item.Id, item);
        }
        List<T> result = new List<T>();
        foreach (var item in dtoMap.Values)
        {
            if (item.ParentId == 0)
            {
                result.Add(item);
            }
            else
            {
                if (dtoMap.ContainsKey(item.ParentId))
                {
                    dtoMap[item.ParentId].AddChilrden(item);
                }
            }
        }
        return result;
    }
}

实体类必须实现接口:

public interface IToTreeModel
{
    int Id { get; set; }
    int ParentId { get; set; }
    List<IToTreeModel> children { get; set; }
    void AddChilrden(IToTreeModel node);
}

 实体类实例:

    public class ShowMessageUpdatesViewModel: IToTreeModel
    {
        public int Id { get; set; }
        public int ParentId { get; set; }
        public string Name { get; set; }
        public List<IToTreeModel> children { get; set; }
        public void AddChilrden(IToTreeModel node)
        {
            if (children == null)
                children = new List<IToTreeModel>();
            this.children.Add(node);
        }
    }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM