关于树形表结构的数据如何返回级联数据结构
///
/// 数据组装
///
/// 开始级数据
/// 总省市区数据
/// 结束级 默认区(含)1国2省3市4区
///
public List<City_OM> GetCityRange(List<City_OM> regionTypeData, List<City_OM> source, int endRegion = 4)
{
if (!regionTypeData.Any() || int.Parse(regionTypeData.First().RegionType) > endRegion)
{
return new List<City_OM>();
}
List<City_OM> data = new List<City_OM>();
regionTypeData.ForEach(f =>
{
data.Add(new City_OM
{
Code = f.Code,
Name = f.Name,
ParentCode = f.ParentCode,
RegionType = f.RegionType,
Children = GetCityRange(source.Where(w => w.ParentCode == f.Code).ToList(), source, endRegion)
});
});
return data;
}
实体
///
/// 获取省市区
///
public class City_OM
{
///
/// id
///
public int Code { get; set; }
///
/// 上级id
///
public int ParentCode { get; set; }
///
/// 名称
///
public string Name { get; set; }
///
/// 级别 1 国家 2 省 3 市 4 区县
///
public string RegionType { get; set; }
///
///
///
public List<City_OM> Children { get; set; }
}
以宁夏回族自治区为例,返回:
{
"code": 640000,
"parentCode": 1,
"name": "宁夏回族自治区",
"regionType": "2",
"children": [
{
"code": 640100,
"parentCode": 640000,
"name": "银川市",
"regionType": "3",
"children": [
{
"code": 640104,
"parentCode": 640100,
"name": "兴庆区",
"regionType": "4",
"children": []
},
{
"code": 640105,
"parentCode": 640100,
"name": "西夏区",
"regionType": "4",
"children": []
},
{
"code": 640106,
"parentCode": 640100,
"name": "金凤区",
"regionType": "4",
"children": []
},
{
"code": 640121,
"parentCode": 640100,
"name": "永宁县",
"regionType": "4",
"children": []
},
{
"code": 640122,
"parentCode": 640100,
"name": "贺兰县",
"regionType": "4",
"children": []
},
{
"code": 640181,
"parentCode": 640100,
"name": "灵武市",
"regionType": "4",
"children": []
},
{
"code": 640182,
"parentCode": 640100,
"name": "其它区",
"regionType": "4",
"children": []
}
]
},
{
"code": 640200,
"parentCode": 640000,
"name": "石嘴山市",
"regionType": "3",
"children": [
{
"code": 640202,
"parentCode": 640200,
"name": "大武口区",
"regionType": "4",
"children": []
},
{
"code": 640205,
"parentCode": 640200,
"name": "惠农区",
"regionType": "4",
"children": []
},
{
"code": 640221,
"parentCode": 640200,
"name": "平罗县",
"regionType": "4",
"children": []
},
{
"code": 640222,
"parentCode": 640200,
"name": "其它区",
"regionType": "4",
"children": []
}
]
},
{
"code": 640300,
"parentCode": 640000,
"name": "吴忠市",
"regionType": "3",
"children": [
{
"code": 640302,
"parentCode": 640300,
"name": "利通区",
"regionType": "4",
"children": []
},
{
"code": 640303,
"parentCode": 640300,
"name": "红寺堡区",
"regionType": "4",
"children": []
},
{
"code": 640323,
"parentCode": 640300,
"name": "盐池县",
"regionType": "4",
"children": []
},
{
"code": 640324,
"parentCode": 640300,
"name": "同心县",
"regionType": "4",
"children": []
},
{
"code": 640381,
"parentCode": 640300,
"name": "青铜峡市",
"regionType": "4",
"children": []
},
{
"code": 640382,
"parentCode": 640300,
"name": "其它区",
"regionType": "4",
"children": []
}
]
},
{
"code": 640400,
"parentCode": 640000,
"name": "固原市",
"regionType": "3",
"children": [
{
"code": 640402,
"parentCode": 640400,
"name": "原州区",
"regionType": "4",
"children": []
},
{
"code": 640422,
"parentCode": 640400,
"name": "西吉县",
"regionType": "4",
"children": []
},
{
"code": 640423,
"parentCode": 640400,
"name": "隆德县",
"regionType": "4",
"children": []
},
{
"code": 640424,
"parentCode": 640400,
"name": "泾源县",
"regionType": "4",
"children": []
},
{
"code": 640425,
"parentCode": 640400,
"name": "彭阳县",
"regionType": "4",
"children": []
},
{
"code": 640426,
"parentCode": 640400,
"name": "其它区",
"regionType": "4",
"children": []
}
]
},
{
"code": 640500,
"parentCode": 640000,
"name": "中卫市",
"regionType": "3",
"children": [
{
"code": 640502,
"parentCode": 640500,
"name": "沙坡头区",
"regionType": "4",
"children": []
},
{
"code": 640521,
"parentCode": 640500,
"name": "中宁县",
"regionType": "4",
"children": []
},
{
"code": 640522,
"parentCode": 640500,
"name": "海原县",
"regionType": "4",
"children": []
},
{
"code": 640523,
"parentCode": 640500,
"name": "其它区",
"regionType": "4",
"children": []
}
]
}
]
}