/// <summary> /// 多级类定义字段 /// </summary> public class PostAreasTree { public string id { get; set; } = "0"; public string parentId { get; set; } = "0"; public int depth { get; set; } = 0; public string name { get; set; } = null; public List<PostAreasTree> child; } /// <summary> ///城市地区获取列表 /// </summary> /// <param name="entity"></param> /// <returns></returns> [HttpPost] public async Task<JsonResult> GetAreaListTwo() { string Clerk = "SELECT * FROM CoreCmsArea "; DataTable Clerklist = SqlHelper.Query(Clerk); //获取全部数据 var AreasTree = new List<PostAreasTree>(); //定义PostAreasTree list 数组 for (int i = 0; i < Clerklist.Rows.Count; i++) // List 赋值 { AreasTree.Add(new PostAreasTree() { id = Clerklist.Rows[i]["id"].ToString(), parentId = Clerklist.Rows[i]["parentId"].ToString(), name = Clerklist.Rows[i]["name"].ToString(), depth =int.Parse( Clerklist.Rows[i]["depth"].ToString()), child = null }) ; } var AreaInfo = AreasTree.Where(p => p.parentId == "0").ToList(); // 查询第一级 父id 为0 AreasTree = _Area.getList(AreaInfo, AreasTree); //调用递归方法 var jm = new WebApiCallBack();//定义返回json字符串 jm.status = true; jm.msg = "数据获取成功 "; jm.data = AreasTree; return Json(jm); } //递归方法 public List<PostAreasTree> getList(List<PostAreasTree> objectList, List<PostAreasTree> originList) { List<PostAreasTree> newList = new List<PostAreasTree>(); //定义新的数组 foreach (var item in objectList) //循环参数父数组 { List<PostAreasTree> childList = originList.Where(x => x.parentId == item.id).ToList(); //查找父数组的子集 if (childList.Count > 0) { item.child = getList(childList, originList); //行数大于0赋值循环调用 } newList.Add(item);//数组添加值 } return newList; //返回 }
返回数据
{ "methodDescription": null, "otherData": null, "status": true, "msg": "数据获取成功 ", "data": [ { "child": [ { "child": [ { "child": null, "id": "410182", "parentId": "410100", "depth": 3, "name": "荥阳市" } ], "id": "410100", "parentId": "410000", "depth": 2, "name": "郑州市" } ], "id": "410000", "parentId": "0", "depth": 1, "name": "河南省" } ], "code": 0 }