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);
        }
    }

原文地址:https://www.cnblogs.com/ANPY/p/10089819.html

时间: 2024-10-01 03:03:44

C#生成树形结构泛型类的相关文章

Delphi中根据分类数据生成树形结构的最优方法

一. 引言:    TreeView控件适合于表示具有多层次关系的数据.它以简洁的界面,表现形式清晰.形象,操作简单而深受用户喜爱.而且用它可以实现ListView.ListBox所无法实现的很多功能,因而受到广大程序员的青睐.    树形结构在Windows环境中被普遍应用,但在数据库开发中面对层次多.结构复杂的数据,如何快速构造树形目录并实现导航呢?    二. 实现关键技术:    在Delphi提供的控件中包含了TreeView控件,但树的具体形成还需要用户编写代码.即它的列表项要在程序

递归生成树形结构

原文地址:https://blog.csdn.net/q13965211/article/details/80772544 节点树树形结构 Tree 结构 import java.util.List; /** * @Author fanwei * @date 2018-6-13 17:04 */ public class TreeNode { private Integer key; private String title; private Integer parentId; private

级联数据生成树形结构

原文地址:https://www.cnblogs.com/newlangwen/p/9969904.html Tree 结构 public class TreeNode { private Integer key; private String title; private Integer parentId; private List<TreeNode> children; public Integer getKey() { return key; } public String getTit

生成树形结构的json字符串代码.

框架是使用EF6.0.可以针对返回的值使用Newtonsoft.Json.dll(百度搜一下)来对返回的值序列化为json字符串,如果对以下值那就是使用JsonConvert.SerializeObject(functionTree),啥都不说,上实例代码 /// <summary> /// init tree /// </summary> /// <returns></returns> public List<FunctionInfoMapping&

TreeView生成树形结构

1.表结构内容 2.代码 public void InitData() { using (var db = new HJSDR_BJXH_20170303_TESTEntities()) { pyFiles = new PyFiles(); TreeNode rootNode = null; TreeNode typeNode = null; foreach (var item in db.ED_KPI_INFO) { if (!tv_singal.Nodes.ContainsKey(item.

关于EasyUI使用tree方法生成树形结构加载两次的问题

html代码中利用class声明了easyui-tree,导致easyUI解析class代码的时候先解析class声明中的easyui-tree这样组件就请求了一次url:然后又调用js初始化代码请求一次url.这样导致了重复加载,解决的方法就是只用一种初始化方法来声明easyUI组件以避免重复的提交请求,即删除html中的class声明(class="easyui-tree"): 加载两次的写法: <div class="easyui-panel" styl

如何生成树形文件目录结构

一.生成树形结构的目录 如下形式:E:.│  .buildpath│      ├─attachment│  │  image-not-exist.gif│  │  readme│  │  │  ├─2014│  │  ├─01│  │  │  ├─01│  │  │  ├─02│  │  │  ├─03 方法:用MS-Dos下的tree命令 1.在windows中打开命令行窗口 2.进入你想要列出目录下面 [cd E:\Develop\SourceCode] 3.命令提示符下运行 tree /

easyUI树形结构

树形结构是常见也是常用的,之前一直在使用但是基本都是调用别人写好的方法,好像也没调用太明白的感觉,这次在开发ITOO的时候终于研究了一番,发现其实要实现树形结构其实不是一件困难的事,而且实现方法也不是唯一的,之前大家都很倾向使用zTree,网上搜了一下发现zTtree是一个比较强大"树插件"但是觉得对于目前的我来说并不是很合适,首先我们的前台框架使用的easyUI,easyUI有自己的树形结构控件,再引入一个zTree没有多大的必要:而且对于我来说相对于js代码来说我更熟悉使用后台ja

将树形结构生成Json字符串

1 /// <summary> 2 /// 将树形结构生成Json字符串 3 /// </summary> 4 /// <param name="dt">传入的树形结构DataTable</param> 5 /// <param name="childColumnName">子级ID列名</param> 6 /// <param name="parentColumnName&qu