ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-06-08 11:33:16  阅读:188  来源: 互联网

标签:引导 set string get C# 生成 nodes public categories


效果:

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

 

标签:引导,set,string,get,C#,生成,nodes,public,categories
来源: https://www.cnblogs.com/w2011/p/14862112.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有