一:理解Dictionary
1:在C#编程中,Dictionary的用途很广,很实用,它翻译成中文的意思是‘字典’,功能和现实中的字典功能很相似,他的结构是这样的:Dictionary<[key], [value]>,存数据的时候是以键值对的形式存的,取数据的时候也是通过键,找到对应的值!存取都很方便
2:他本身有集合的功能有时候可以把它看成数组,可以存很多值,取的时候只要用对应的键就可以拿到对应的值
3:有时候在做项目时候,我们会有这么个需求,拿对应的值,去数据库中取对应的数据,但是如果每次都去数据库中查找,这样效率会很低,因为每次都要访问数据库,中间会经历很多步骤,这个时候就可以把数据一次性读取,存入到字典里,再从字典里取对应的数据,效率会大大提高!
二:代码示例
static void Main(string[] args) { //实例化对象 //键为int类型,值为string类型 Dictionary<int, string> dic = new Dictionary<int, string>(); //对象打点添加 dic.Add(1, "one"); dic.Add(2, "two"); dic.Add(3, "three"); //提取元素的方法 string a = dic[1]; string b = dic[2]; string c = dic[3]; Console.WriteLine(a + "," + b + "," + c); //实例化对象 //键为string类型,值为string类型 Dictionary<string, string> dic2 = new Dictionary<string, string>(); dic2.Add("name", "张三"); dic2.Add("age", "18"); dic2.Add("add", "上海"); //提取元素的方法 string name = dic2["name"]; string age = dic2["age"]; string add = dic2["add"]; Console.WriteLine("姓名:" + name + ", " + "年龄:" + age + ", " + "地址:" + add); Console.ReadKey(); }
三:对字典排序
Dictionary<int, string> dic = new Dictionary<int, string>(); dic.Add(1, "1"); dic.Add(5, "5"); dic.Add(3, "3"); dic.Add(2, "2"); dic.Add(4, "4"); var result = from res in dic orderby res.Key select res; foreach (KeyValuePair<int, string> res in result) { Console.WriteLine("Key:{0}, Value:{1}", res.Key, res.Value); } Console.ReadKey();
四:使用案例
1,需求:现在要导入一批数据,这些数据中有一个称为公司的字段是我们数据库里已经存在了的,目前我们需要把每个公司名字转为ID后才存入数据库。
2,分析:每导一笔记录的时候,就把要把公司的名字转为公司的ID,这个不应该每次都查询一下数据库的,因为这太耗数据库的性能了。
解决方案:在业务层里先把所有的公司名称及相应的公司ID一次性读取出来,然后存放到一个Key和Value的键值对里,然后实现只要把一个公司的名字传进去,就可以得到此公司相应的公司ID,就像查字典一样。对,我们可以使用字典Dictionary操作这些数据
代码示例:
class Program { static void Main(string[] args) { Dictionary<string, int> myDictionary = SetKeyValue(); //测试得到公司2的值 int directorValue = myDictionary["公司2"]; Console.Write("公司2的value是:" + directorValue.ToString()); } public static Dictionary<string, int> SetKeyValue() { Dictionary<string, int> dic = new Dictionary<string, int>(); dic.Add("公司1", 1); dic.Add("公司2", 2); dic.Add("公司3", 3); dic.Add("公司4", 4); return dic; } }
总结完毕!
原文:https://www.cnblogs.com/dcy521/p/11427972.html