c# - 求序列化的思路

查看:76
本文介绍了c# - 求序列化的思路的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

现有一个城市名表;
我想要把所有城市都查询出来,转换成 [省[市[区]]] 这样的格式;

表结构

想要的效果

现在思路有点乱,想请前辈们指教

补充,其实我就是想要一个递归实现,以下方法过于暴力,而且有点问题

解决方案

class Node{
    public Guid Id{get;set;}
    public string Name{get;set;}
    public List<Node> Nodes{get;set;}
}

class NodeService{
    public string GetJsonCity()
    {
        var nlist=GetNodeList();
        var result=JSON.toJSONString(nlist);    //自己找个json格式化的代码
        //返回的结果可能与你的要求不一样,不过重点是这个思路,不一样的看着改下
        return result;
    }
    public List<Node> GetNodeList(List<CityModel> clist=null,CityModel cm=null)
    {
        List<CityModel> cmlist=new List<CityModel>();
        //第一次递归时获取所有的地址信息
        if(clist==null)   
        {
            clist=_City_DB.All().ToList();
            cmlist=clist.Where(t=>t.level==0).ToList();//我这里是从国开始,要想把城市作为第一级,把0改成1就是;
        }
        else
        {
            cmlist=clist.Where(t=>t.PId==cm.Id).ToList();//获取下属城市|区
        }
        
        List<Node> nlist=new List<Node>();
        foreach(var c in cmlist)
        {
            Node n=new Node(){
                Id=c.Id,
                Name=c.District,
                Nodes=GetNodeList(clist,c)
            }
            nlist.Add(n);
        }
    }
}

这篇关于c# - 求序列化的思路的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆