Dictionary 类:http://msdn.microsoft.com/zh-cn/library/xfhwa508(v=VS.100).aspx请问,字典没有索引吗?像集合一样,可以根据键值得到索引,难道它是随机乱排的吗?
为什么不能根据键值得到索引的方法呢?
从字典中取值,是不是每一次取值的顺序都是一样的呢?

解决方案 »

  1.   

    你应该用 HashTable。字典的键是唯一的,何谈顺序?
      

  2.   

    HashTable,有个概念叫“哈希代码”?不懂,难学吗?
      

  3.   


    你可以用 Enumerable.ToList方法把字典的值转为List再用索引
      

  4.   

    HashCode可以重复的。
    而Dictionary的Key则不可以重复。GetHashCode() 可以被重载。你可以实现自己的 Hash 算法。具体可以看《数据结构》教材。
      

  5.   

    HashTable也是无序的...集合本无序,List之类的有序集合是特意设计的...
      

  6.   


    恩它不会按add的顺序去遍历但是我觉得LZ想的比较怪。有Key能直接定到值的干嘛要它有序呢?
      

  7.   

    因为,从左到右,有很多label,取出来后,我需要从左到右在label上运用
    比如:键值是1、2、3、4、5、6、7、8、9、........
    那么,取出来后,我遍历label,编译器好像是从左到右遍历label的,因此,刚好,从左到右的label上,也是从1、2、3、4、5、6、......那样,从小到大运用的
    前几天还可以,但今天,不知道为什么最后几位键值对跑到前边去了(最左边)
      

  8.   

    Linq查询,我还没学,麻烦写个公式,我先用上,
    从键值对中取出后,在新的List中排好序
      

  9.   

    按照值排序:
    Dictionary<T1, T2> dict = new Dictionary<T1, T2>();
    ...
    dict = dict.OrderBy(x => x.Value).ToDictionary(x => x.Key, y => y.Value);按照键排序:
    Dictionary<T1, T2> dict = new Dictionary<T1, T2>();
    ...
    dict = dict.OrderBy(x => x.Key).ToDictionary(x => x.Key, y => y.Value);