zoukankan      html  css  js  c++  java
  • 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);
            }

  • 相关阅读:
    hadoop再次集群搭建(3)-如何选择相应的hadoop版本
    48. Rotate Image
    352. Data Stream as Disjoint Interval
    163. Missing Ranges
    228. Summary Ranges
    147. Insertion Sort List
    324. Wiggle Sort II
    215. Kth Largest Element in an Array
    快速排序
    280. Wiggle Sort
  • 原文地址:https://www.cnblogs.com/w2011/p/14862112.html
Copyright © 2011-2022 走看看