zoukankan      html  css  js  c++  java
  • 使用List,Dictionary加载数据库中的数据

    情景描述:数据库中有一张设备表,字段DWDM存放的是各个厂编号,字段ZNBH存放的是设备编号。其中DWDM跟ZNBH是一对多的关系。需要将数据库中的值加载到List<Dictionary<string,List<string>> 中。

    其中内部List<string>存放的是一个站内编号ZNBH,Dictionary<string,List<string>> 存放的是一个厂的DWDM和所有的站内编号ZNBH,

    List<Dictionary<string,List<string>>中存放的是各个厂的各台设备。

    数据库中数据如下:

    案例分析:根据题意,结合以上具体数据,可知数据库中存放了这样的数据

    List<string> list=new List<string>()

    {

     "01","02","SL"

    };

    Dictionary<string,List<string>>  dic=new Dictionary<string,List<string>>();

    dic.add("30202419",list);

    List<Dictionary<string,List<string>>> result=new List<Dictionary<string,List<string>>>();

    result.add(dic);

    这里关键是创建List<string>的时机 - 某个厂的第一台设备,将dic加入结果集的时机 - 某个厂的最后一台设备。

    代码实现

     public List<Dictionary<string, List<string>>> GetDwdmZnbhList(int type)
            {
                List<Dictionary<string, List<string>>> result = null;
                string sql = @"select dwdm,znbh   from sysconfig_llwh where jclx={0} group by dwdm, znbh  order by dwdm";
                sql = String.Format(sql, type);
                DataTable dt = DBDataAccess.GetInstance().GetDataTable(SysConfig.TargetConnectionString, sql);
    
                string dwdm_pre = String.Empty;
                string dwdm = String.Empty;
                string dwdm_next = String.Empty;
                string znbh = String.Empty;
    
                Dictionary<string, List<string>> dic = null;
                List<string> list = null;
                result = new List<Dictionary<string, List<string>>>();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //为本行前面的单位代码赋值
                    if (i == 0)
                        dwdm_pre = "";
                    else
                        dwdm_pre = dt.Rows[i - 1]["DWDM"].ToString();
                    //为本行单位代码赋值
                    dwdm = dt.Rows[i]["DWDM"].ToString();
                    //为本行后面行的单位代码赋值
                    if (i != dt.Rows.Count - 1)
                        dwdm_next = dt.Rows[i + 1]["DWDM"].ToString();
                    else
                        dwdm_next = "";
                    if (dwdm_pre != dwdm)
                    {
                        //在谋厂第一台设备时,创建List,Dic
                        list = new List<string>();
                        dic = new Dictionary<string, List<string>>();
                        dwdm = dt.Rows[i]["DWDM"].ToString();
                        znbh = dt.Rows[i]["ZNBH"].ToString();
                        list.Add(znbh);
                        dic.Add(dwdm, list);
                        if (dwdm != dwdm_next)
                            result.Add(dic);
                    }
                    else
                    {
                       
                        znbh = dt.Rows[i]["ZNBH"].ToString();
                        list.Add(znbh);
                        dic.Clear();
                        dic.Add(dwdm, list);
                       //在谋厂最后一台设备时,将Dic 加入List中
                        if (dwdm != dwdm_next)
                            result.Add(dic);
                    }
                }
                return result;
            }
  • 相关阅读:
    PHP做Web开发的MVC框架(Smarty使用说明 )
    PHP + Smarty + MySQL
    PHP中smarty与MYSQL数据库的连接
    linux上安装phpstudy
    ThinkPHP使用smarty模板引擎的方法
    smarty 模板几个例子(变量调节器)
    Smarty的基本使用与总结
    gcd 控制线程执行顺序(供参考)
    手动实现 NSTabViewController 的 Rect Transition 及 Propagate Title-b
    Mac、Linux与Windows
  • 原文地址:https://www.cnblogs.com/wllzbky/p/4134062.html
Copyright © 2011-2022 走看看