请教大牛:Dictionary对象可以通过VALUE读取KEY吗?一般情况都是通过KEY读取VALUE;但是通过VALUE读取KEY并不常见,目前是通过遍历的方式查找KEY,感觉非常麻烦,而且效率也不高,
有没有其他更好的方法实现呢?先谢了。

解决方案 »

  1.   

    那你就将value当作key,把key当作value
      

  2.   

    呵呵 一般情况下是通过key来读取value的
      

  3.   

    可以.但是,如果VALUE有重复,读到两不同的key,怎么办?你如何分区他们的对应关系呢?
      

  4.   

    不能通过值获取key哦,如果要获取只能是遍历了,但是遍历也不好,如果有两个key是一样value就行不通了..
      

  5.   

    我这个KEY和VALUE是肯定都不重复的...VALUE读取KEY的情况用得很少,目前是遍历读取,有些烦....
    创建两个dic的话又觉得太浪费资源。因此想请教各位大牛碰到这种情况如何处理比较好一些呢?
      

  6.   

    或者是否有其他双向KEY的列表对象可以替代DIC对象使用呢?
      

  7.   

    LZ是觉得程序麻烦还是效率低?Dictionary<int, int> test = new Dictionary<int, int>();
    var k = from item in test where item.Value == 10 select item.Key;看起来好像简洁了一些,实际上还是遍历,效率没有变化。
      

  8.   

    肯定没有现成的,用2个Dictionary做也不是很麻烦。空间占用有限,并且有不少项目,
    也就是用这个方法做的。
      

  9.   

    同意,呵呵,如果两个VALUE的话你得读出两个,类似数据库
      

  10.   

    结构其实很简单,就是一个城市字典:Dictionary<城市编号,城市名称>大部份通过编号读取城市名称,个别情况需要根据城市名称读取编号。
    就是这样一个需求。不知道有没有其他数据结构可以完成这种双向高效读取的字典类型?
      

  11.   

    如果是要求精确查询,用两个Dictionary比较好,如果是模糊或带提示的,用两个排序好的List,
    配合BinarySearch比较好。为了保证效率,数据冗余是难免的。
      

  12.   

    Dictionary <城市编号,城市名称> 
    这种城市名肯定不会重复的,遍历Dictionary,根据城市名称找到城市编号是没有问题吧
      

  13.   

    Dictionary 其实也是遍历的你这样的要求真的没必要用Dictionary
    直接用个List反而到好了。自己做遍历吧
      

  14.   

    Dictionary 不用遍历,是基于散列Hash的。
      

  15.   

    哦。和Hashtable 差不多
    之前都没注意
      

  16.   

    这种结构用两个Dictionary<string,string>不会多占多少资源,因为.NET有字符串驻留技术...假如你这个集合有1000个项,即使Key和Value全部不重复最多也只会创建2000个字符串...你用两个Dictionary<string,string>或者十个八个上百个来,只要还是这些字符串就不会有新的字符串被创建...多出的只不过是栈上的1个引用占用4字节及托管堆上多了1000个引用外加结构信息占用大约4K字节,依此类推...这是指32位系统,64位系统多一倍,几M字节对托管堆来说小得很...这是以空间换效率...
      

  17.   

    忘了hash值了,还要加上托管堆上1000个hash值,还要多占用4K字节...