情景描述:数据库中有一张设备表,字段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 = ; i < dt.Rows.Count; i++)
{
//为本行前面的单位代码赋值
if (i == )
dwdm_pre = "";
else
dwdm_pre = dt.Rows[i - ]["DWDM"].ToString();
//为本行单位代码赋值
dwdm = dt.Rows[i]["DWDM"].ToString();
//为本行后面行的单位代码赋值
if (i != dt.Rows.Count - )
dwdm_next = dt.Rows[i + ]["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;
}

使用List,Dictionary加载数据库中的数据的更多相关文章

  1. 依赖Spring的情况下,Java Web项目如何在启动时加载数据库中的数据?

    原文:https://blog.csdn.net/u012345283/article/details/39558537 原文:https://blog.csdn.net/wandrong/artic ...

  2. Spark 加载数据库mysql表中数据进行分析

    1.工程maven依赖包 <properties> <spark_version>2.3.1</spark_version> <!-- elasticsear ...

  3. Android之数据存储----使用LoaderManager异步加载数据库

    一.各种概念: 1.Loaders: 适用于Android3.0以及更高的版本,它提供了一套在UI的主线程中异步加载数据的框架.使用Loaders可以非常简单的在Activity或者Fragment中 ...

  4. ajax验证表单元素规范正确与否 ajax展示加载数据库数据 ajax三级联动

    一.ajax验证表单元素规范正确与否 以用ajax来验证用户名是否被占用为例 1创建表单元素<input type="text" id="t"> 2 ...

  5. ThinkCMF项目部署出现无法加载数据库驱动解决方案

    最近有个TP项目刚从从本地部署到阿里云服务器上,出现了无法加载数据库驱动的错误,提示 :( 无法加载数据库驱动: Think\Db\Driver 这里分享一下出现该错误的解决步骤: 首先记得项目部署到 ...

  6. java 加载数据库驱动

    JDBC编程步骤见 JDBC编程步骤 JDBC编程的第一步是加载数据库驱动,使用Class类的forName()方法,Class.forName("com.mysql.jdbc.Driver ...

  7. Android-LoaderManager异步加载数据库数据

    LoaderManager异步加载数据库数据,是在(Activity/fragment/其他UI等) 加载大量的本地Database库表数据,由于数据大在加载过程中会导致UI线程阻塞,导致用户体验不好 ...

  8. JDBC 学习笔记(四)—— JDBC 加载数据库驱动,获取数据库连接

    1. 加载数据库驱动 通常来说,JDBC 使用 Class 类的 forName() 静态方法来加载驱动,需要输入数据库驱动代表的字符串. 例如: 加载 MySQL 驱动: Class.forName ...

  9. jdbc 加载数据库驱动如何破坏双亲委托模式

    导读      通过jdbc链接数据库,是每个学习Java web 方向的人必然一开始会写的代码,虽然现在各路框架都帮大家封装好了jdbc,但是研究一下jdbc链接的套路还是很意义     术语以及相 ...

随机推荐

  1. AndroidSDK无法下载API包的解决方法

    1:打开Android SDK Manager”,然后点击菜单栏中的“Tools”菜单选项,接下来只需选择“Options”选项即可打开设置窗体,在打开的选项中找到Others框,里面勾选第一个: F ...

  2. 一道关于比赛胜负的Sql查询题目

    以前做过一道题目,一直没有来得及总结下来.贴图: 记得以前曾经找到了两种方法,今天试了一下,还是可以的,贴出过程: 下面是具体的查询方法: 原来放的是图片,今天又练习了一下,附代码: create T ...

  3. Zend-MVC intro

    Zend-MVC intro Zend MVC层建立在servicemanager.eventmanager.http.stdlib.几个组件之上.相关组件介绍会在其他文章中详细说明. 除了以上4大组 ...

  4. Python之回调魔法

    Python中魔法(前后又下划线)会在对象的生命周期被回调. 借助这种回调, 可以实现AOP或者拦截器的思想. 在Python语言中提供了类似于C++的运算符重在功能:一下为Python运算符重在调用 ...

  5. C#调用Python 脚本语言

    1. 安装IronPython http://pan.baidu.com/s/1qW4jNJ2  下载IronPython 2.7 安装下载下来的安装包 2. 创建项目 创建一个C#的Windows窗 ...

  6. Java Day 01

    2-19交互方式 GUI Graphical User Interface CLI Command Line Interface JavaEE Enterprise Edition 13种技术 Jav ...

  7. layoutSubviews -- setNeedsLayout -- layoutIfNeeded -- 区别

    -layoutSubviews方法:这个方法,默认没有做任何事情,需要子类进行重写-setNeedsLayout方法: 标记为需要重新布局,异步调用layoutIfNeeded刷新布局,不立即刷新,但 ...

  8. iOS关于CGContextSetBlendMode: invalid context 0x0的错误

    在ios 7的模拟器中,选择一个输入框准备输入时,会触发这个错误,以下是出错详细日志: <Error>: CGContextSetBlendMode: invalid context 0x ...

  9. 配置 RAILS FOR JRUBY1.7.4

    1. 去JRUBY官方网站下载JRUBY http://www.jruby.org/ 目前最新版本是1.7.4,解压到C:\目录下 2. 设置环境变量 JRUBY_HOME = C:\jruby-1. ...

  10. Linux安装python 2.7.9

    1.下载python wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz 2.解压.编译安装 tar -zxvf Python- ...