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); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人