C#读取DatTable返回一个嵌套的Json

Model:

复制代码
    public class CustomerModel
    {
        public string CLIENTID { get; set; }
        public DateTime DATE_C { get; set; }
        public bool ISACTIVE { get; set; }
        public string NAME { get; set; }

        public IList<PersonModel> ContactPersons = new List<PersonModel>();
        public void Addchildren(PersonModel node)
        {
            this.ContactPersons.Add(node);
        }
    }
    
    public class PersonModel
    {
        public string CLIENTID { get; set; }
        public string CONTACT { get; set; }
        public string TEL { get; set; }
        public string EMAIL { get; set; }

    }
复制代码

 

MainForm.cs:

复制代码
        

        public static IList<CustomerModel> customers = new List<CustomerModel>();
        public List<dynamic> TableToList(DataTable dt)
        {
            DataTable dataTable = new DataTable();
            dataTable=dt;
            List<dynamic> customer = new List<dynamic>();
            int rowcountall = dataTable.Rows.Count;

            for (int rowcount = 0; rowcount < rowcountall; rowcount++)
            {
                string clientID = dataTable.Rows[rowcount][0].ToString();
                NestedTree(dt, clientID);
                List<dynamic> result = new List<dynamic>();
                foreach (object item in customers)
                {
                    result.Add(item);
                }
                customer.Add(result);
                DataRow[] rows = dataTable.Select("CLIENTID='"+ clientID +"'");
                foreach (DataRow row in rows)
                {
                    dataTable.Rows.Remove(row);
                }
                rowcountall = dataTable.Rows.Count;
            }

            return customer;
        }
        string jsonData = JsonConvert.SerializeObject(customers);

        public void NestedTree(DataTable dt, string key)
        {
            DataRow[] rows = dt.Select("CLIENTID='"+ key +"'");
            CustomerModel customer = new CustomerModel();
            customer.clientID=rows[0]["CLIENTID"].ToString();
            customer.created=(DateTime)rows[0]["DATE_C"];
            customer.isActive=(bool)rows[0]["ISACTIVE"];
            customer.name=rows[0]["NAME_c"].ToString();

            //customers.Add(customer);

            List<PersonModel> contact = new List<PersonModel>();
            customer.ContactPersons=contact;


            foreach (DataRow row in rows)
            {
                PersonModel children = new PersonModel();
                children.CLIENTID = row["CLIENTID"].ToString();
                children.CONTACT = row["CONTACT"].ToString();
                children.TEL = row["TEL"].ToString();
                children.EMAIL = row["EMAIL"].ToString();

                contact.Add(children);
            }

            customers.Add(customer);
        }
复制代码

 

posted @   鱼仔鱼仔  阅读(119)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示