情景描述:数据库中有一张设备表,字段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. Android Material Design的FloatingActionButton,Snackbar和CoordinatorLayout

    如果是为了兼容低版本的Android系统,则需要引用Android Material Design的扩展支持库,我在之前的一篇文章张,较为详细的说明了如何导入Android Material Desi ...

  2. 用nodejs删除mongodb中ObjectId类型数据

    mongodb中"_id"下面有个ObjectId类型的数据,想通过这个数据把整个对像删除,费了半天劲终于搞定费话少说上代码 module.exports = function ( ...

  3. pyQuery

    pyquery – PyQuery complete API 选择器基本支持jQuery用法 class pyquery.pyquery.PyQuery(*args, **kwargs) The ma ...

  4. Windows C盘格式化或者同平台迁移oracle数据库

    我们知道如果是Linux 同平台迁移oracle数据库.只要是安全关闭了数据库,在新机器上创建用户组,配置了环境变量,将数据库安装目录拷贝到对应的目录就好用了. 一直在寻求Windows平台上这类的解 ...

  5. 常用设备类别及其GUID

    Class ClassGuid 说明 1394 6BDD1FC1-810F-11D0-BEC7-08002BE2092F 1394主控制器 CDROM 4D36E965-E325-11CE-BFC1- ...

  6. float类型进行计算精度丢失的问题

    今天一个案子,用户反映数量差异明明是 2.0-1.8,显示的结果却为0.20000005,就自己写了段方法测试了一下:package test1;public class Test2 {/*** @p ...

  7. MySQL性能优化的最佳20+套经验

      今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情.当我们去设计数据库表结构,对操 ...

  8. 《C# 白话系列之——白话委托》读后记

    今天在博客圆首页看到一篇文章:<C# 白话系列之——白话委托> http://www.cnblogs.com/djangochina/p/3410002.html#commentform ...

  9. 【C#】线程池

    将方法排入队列以便执行,并指定包含该方法所用数据的对象.此方法在有线程池线程变得可用时执行. class Program { static void Main(string[] args) { str ...

  10. c++ linux 下的调试工具及用法

    1当程序出现core的时候: gdb out[your program] core.out.45726.1431954543 可以看到程序崩溃时候的堆栈信息. valgrind ./out 由于val ...