C# 我们能检索字典吗<;A、 B>;元素的插入顺序?

C# 我们能检索字典吗<;A、 B>;元素的插入顺序?,c#,C#,我们如何按照插入的顺序检索字典元素?如果dictionary不支持这一点,那么我应该使用哪个对象,它给出dictionary的行为,但也允许我按照元素插入的顺序获取元素 谢谢: 字典是无序的,如果你想让它们按它们插入的顺序返回,你可能想考虑一般的 不,字典没有这样的功能。 你可以 使用2种结构并同时插入到两者中-List/LinkedList存储序列和dictionary以提供快速查找 您可以向字典中存储的条目添加有关插入时间的信息 不能保证您可以按顺序从字典中检索元素。如果这是您想要的行为,只

我们如何按照插入的顺序检索
字典
元素?如果dictionary不支持这一点,那么我应该使用哪个对象,它给出dictionary的行为,但也允许我按照元素插入的顺序获取元素


谢谢:

字典是无序的,如果你想让它们按它们插入的顺序返回,你可能想考虑一般的

不,字典没有这样的功能。

你可以

  • 使用2种结构并同时插入到两者中-List/LinkedList存储序列和dictionary以提供快速查找
  • 您可以向字典中存储的条目添加有关插入时间的信息

  • 不能保证您可以按顺序从
    字典
    中检索元素。如果这是您想要的行为,只需将其封装到一个类中:

    class DictionaryWithKeysOrderedByInsertion<TKey, TValue> : IEnumerable<KeyValuePair<TKey, TValue>> {
        private readonly List<TKey> keys = new List<TKey>();
        private readonly Dictionary<TKey, TValue> dictionary = new Dictionary<TKey, TValue>();
    
        public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator() {
            foreach(var key in keys) { 
                yield return new KeyValuePair(key, dictionary[key]));
            }
        }
    
        // etc.
     }
    
    类字典WithKeysOrderedByInsertion:IEnumerable{
    私有只读列表键=新列表();
    专用只读词典Dictionary=新词典();
    公共IEnumerator GetEnumerator(){
    foreach(键中的var键){
    返回新的KeyValuePair(key,dictionary[key]);
    }
    }
    //等等。
    }