• C#根据数据生成力引导图


    效果:

        public class Rootobject
        {
            public Node[] nodes { get; set; }
            public Link[] links { get; set; }
            public Category[] categories { get; set; }
        }
    
        /// <summary>
        /// 节点
        /// </summary>
        public class Node
        {
            public string id { get; set; }
            public string name { get; set; }
            public float symbolSize { get; set; }
    
            public float value { get; set; }
            public int category { get; set; }
        }
    
        /// <summary>
        /// 关联
        /// </summary>
        public class Link
        {
            public string source { get; set; }
            public string target { get; set; }
        }
    
        /// <summary>
        /// 分类
        /// </summary>
        public class Category
        {
            public string name { get; set; }
        }

    生成Json数据代码

            List<Category> categories = new List<Category>();
            List<Node> nodes = new List<Node>();
            List<Link> links = new List<Link>();
            Rootobject rootobject = new Rootobject();
    
    
            private void toolStripButton1_Click(object sender, EventArgs e)
            {
                categories.Clear();
                nodes.Clear();
                links.Clear();
    
                string[] lines = textBox1.Lines;
                #region 分类
                for (int i = 0; i < lines.Length; i++)
                {
                    string[] valueNum = lines[i].Split('#');
                    string cateGory = valueNum.LastOrDefault();
                    if (string.IsNullOrEmpty(cateGory))
                    {
                        continue;
                    }
                    if (!categories.Any(o => o.name == cateGory))
                    {
                        categories.Add(new Category() { name = cateGory });
                    }
    
                }
    
                #endregion
    
                #region  节点
                for (int i = 0; i < lines.Length; i++)
                {
                    string[] valueNum = lines[i].Split('#');
                    var newGroup = valueNum.Reverse().ToArray();
                    for (int x = 1; x < newGroup.Length; x++)
                    {
                        string cateGory = newGroup[0];
                        var categoryid = categories.FirstOrDefault(o => o.name == cateGory);
                        int maxNode = 0;
                        if (nodes.Any())
                        {
                            maxNode=nodes.Max(p => Convert.ToInt32(p.id));
                            maxNode++;
                        }
                      
                        Node node = nodes.FirstOrDefault(o => o.name == newGroup[x]);
                        if (node == null)
                        {
                            node = new Node()
                            {
                                id = maxNode.ToString(),
                                name = newGroup[x],
                                category = categories.IndexOf(categoryid),
                                symbolSize = 20,
                                value = 2
                            };
                            nodes.Add(node);
                        }
                       
                        if (x == 1)
                        {
                            continue;
                        }
                        else
                        {
    
                            var parentNode = nodes.FirstOrDefault(o => o.name == newGroup[x - 1]);
    
                            links.Add(new Link()
                            {
                                source = node.id,
                                target = parentNode.id
                            });
                        }
    
                    }
                }
                #endregion
    
                rootobject.categories = categories.ToArray();
                rootobject.nodes = nodes.ToArray();
                rootobject.links = links.ToArray();
    
     
                string json = JsonConvert.SerializeObject(rootobject);
                textBox2.Text = "";
                textBox2.AppendText(json);
            }

  • 相关阅读:
    HDU 4666 Hyperspace【最远曼哈顿距离+优先队列】
    Set集合容器
    堆排序实现
    手机网站调试神器之chrome控制台
    CC Sereja and Ballons (主席树)
    Multiset多重集合容器
    ZOJ 3626 Treasure Hunt I
    hdu 2072
    poj 3498 (最大流,枚举汇点)
    排序算法--冒泡排序
  • 原文地址:https://www.cnblogs.com/w2011/p/14862112.html
Copyright © 2020-2023  润新知