巧用Dictionary<TKey,TValue>,完成客户需求
前几天与客户沟通一个项目,客户对其中某个模块提了一个需求。
把从数据库中取出的对物品的统计重新拆分重新统计。鉴于用文字不能清除的表达需求,我将该需求画出来,便于理解。
需求如下图:
就是A,B,C D,四种不同的物品原来是组合统计的,现将其拆分开来各自统计。
我刚开始想着是:通过SQL语句,进行逻辑处理,完成该项需求,想了半天,不得要领。
后来看到导师运用:Dictionary<TKey,TValue>完美将这个需求实现,我受益颇深,故总结其思路,给大家呈现出来。
废话不多说了,开始解决:
1.执行查询语句,从数据库中取出数据,返回 OracleDataReader
OracleDataReader odr = (此处为从数据库中获取数据的代码,省略)。
2.定义两个Dictionary(string,int)集合
Dictionary<string,int> dicSrc = new Dictionary<string,int>();//用来存储原集合
Dictionary<string,int> dicParse = new Dictionary<string,int>();//用来存储目标集合
3.逻辑实现
while(odr.Read())
{
//将原数据表中的物品,数量取出,按键值对放入到集合dicSrc中
dicSrc.Add(ord["物品"].ToString(),int.Parse(odr["数量"].ToString()));
}
odr.Close();
foreach(KeyValuePair<string,int> dic in dicSrc)//循环原集合
{
string[] thickness = dic.Key.Split(new char[] {'+'});拆解集合项,并放入到字符串集合,如A+B=>A,B
foreach (string str in thickness)//循环字符串集合
{
if(dicParse.Keys.Contains(str))//获取的物品已存在目标集合中
{
//更新物品数量 = 原数量 + 新添加的数量
dicParse[str] = dicParse[str] + dic.value
}
else
{
//将键值对的值加入到目标集合中
dicParse.Add(str,dic.Value);
}
}
}
经过以上处理,便可将原数据整理成为客户所需求的数据(dicParse)。
以上方法只是核心代码,其他代码不做陈述,望各位看官理解。希望这个思想能帮到大家。
知识点滴:
巧用Dictionary<TKey,TValue>,完成客户需求的更多相关文章
- .net源码分析 – Dictionary<TKey, TValue>
接上篇:.net源码分析 – List<T> Dictionary<TKey, TValue>源码地址:https://github.com/dotnet/corefx/blo ...
- .NET中Dictionary<TKey, TValue>浅析
.NET中Dictionary<TKey, Tvalue>是非常常用的key-value的数据结构,也就是其实就是传说中的哈希表..NET中还有一个叫做Hashtable的类型,两个类型都 ...
- Dictionary<TKey, TValue> 类
C# Dictionary<TKey, TValue> 类 Dictionary<TKey, TValue> 泛型类提供了从一组键到一组值的映射.字典中的每个添加项都由一个值及 ...
- C# 字典 Dictionary<Tkey,Tvalue>
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来.我们都知道计算机技术发展日新月异,速度惊人的快,你我稍不留神,就会被慢慢淘汰!因此:每日不间断的学习是避免被 ...
- C# .Net 中字典Dictionary<TKey,TValue>泛型类 学习浅谈
一.综述: Dictionary<TKey,TValue>是在 .NET Framework 2.0 版中是新增的.表示键值对的集合,Dictionary<TKey,TValue&g ...
- 自定义一个可以被序列化的泛型Dictionary<TKey,TValue>集合
Dictionary是一个键值类型的集合.它有点像数组,但Dictionary的键可以是任何类型,内部使用Hash Table存储键和值.本篇自定义一个类型安全的泛型Dictionary<TKe ...
- C#编程(五十三)----------字典Dictionary<TKey,TValue>
字典 关键字:Dicitionary 说明: 必须包含命名空间System.Collection.Generic Dictionary里面的每一个元素都是一个键值对(由两个元组组成:键和值). 键必须 ...
- 使用结构struct作为Dictionary<TKey,TValue>的键
我们经常用简单数据类型,比如int作为泛型Dictionary<TKey,TValue>的key,但有时候我们希望自定义数据类型作为Dictionary<TKey,TValue> ...
- Dictionary<Tkey.TValue>与SortedList
一.概述 表示Key/Value集合,可以添加删除元素,允许按Key来访问元素.是Hashtable的泛型等效类. 它需要一个相等实现来确定键是否相等,可以使用实现了IEqualityComparer ...
随机推荐
- CSS基础--常用样式
一.背景相关 背景颜色 background-color :颜色名称/rgb值/十六进制值 背景图片 background-image :url('') 背景图片平铺方式 background-rep ...
- poweshell批量删除某类型文件
错误方法 rm *.o" -recurse 按照提示,rm(remove-item)是可以递归删除子文件夹的.但是这个方法确实无效.在他们的示例里面找到说明: --------------- ...
- JSP之JSTL_functions
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java ...
- Java 调用python说明文档
Java 调用python说明文档 通过java调用python脚本主要如下三种方式: 1.直接执行python脚本: 2.执行python.py文件: 3.使用Runtime.getRuntime( ...
- 存储管理工具StorageExplorer的基本使用
本文主要介绍Azure StorageExplorer工具的安装及基本使用 1.打开Azure官方链接:https://www.azure.cn/downloads/ 2.按照向导进行安装 3.可以通 ...
- js_11_dom其他
有哪些其他js? window.location.href = "跳转页面" // 不写获得本页面url,写跳转到指定页面 confirm('内容') // ...
- U盘安装CentOS 7问题解决
1 使用U盘安装最新版Centos时报错(CentOS-7-x86_64-DVD-1503-01): 错误提示:"Warning:could not boot;Warning: /dev/r ...
- Linux实践篇--自动删除n天前日志
原文出处:http://www.cnblogs.com/peida/archive/2013/03/25/2980121.html linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在 ...
- XML (二)
1 SAX 在使用DOM解析XML文档的时候,需要读取整个XML文档,在内存中构架代表整个DOM树的Document对象,从而再对XML文档进行操作.此种情况下,如果XML文档特别大,就会消耗计算机的 ...
- iOS页面切换动画实现方式。
iOS页面切换动画实现方式. 1.使用UIView animateWithDuration:animations:completion方法 Java代码 [UIView animateWithDura ...