zoukankan      html  css  js  c++  java
  • C#--Dictionary字典学习

    一:理解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;
            }
        }

    总结完毕!

  • 相关阅读:
    对象的深度复制和浅复制 (深度拷贝和浅拷贝)
    包容网关 Inclusive Gateway
    一文带你了解js数据储存及深复制(深拷贝)与浅复制(浅拷贝)
    撸一个简单的vue-router来剖析原理
    vue-组件化-插槽(slot)
    从0开始探究vue-组件化-组件之间传值
    从0开始探究vue-公共变量的管理
    从0开始探究vue-双向绑定原理
    【图机器学习】cs224w Lecture 16
    【图机器学习】cs224w Lecture 15
  • 原文地址:https://www.cnblogs.com/dcy521/p/11427972.html
Copyright © 2011-2022 走看看