Accessing a Dictionary.Keys Key through a numeric index

前端 未结 15 1217
失恋的感觉
失恋的感觉 2020-12-07 13:49

I\'m using a Dictionary where the int is a count of the key.

Now, I need to access the last-inserted Key inside the Dict

15条回答
  •  感情败类
    2020-12-07 14:11

    Visual Studio's UserVoice gives a link to generic OrderedDictionary implementation by dotmore.

    But if you only need to get key/value pairs by index and don't need to get values by keys, you may use one simple trick. Declare some generic class (I called it ListArray) as follows:

    class ListArray : List { }
    

    You may also declare it with constructors:

    class ListArray : List
    {
        public ListArray() : base() { }
        public ListArray(int capacity) : base(capacity) { }
    }
    

    For example, you read some key/value pairs from a file and just want to store them in the order they were read so to get them later by index:

    ListArray settingsRead = new ListArray();
    using (var sr = new StreamReader(myFile))
    {
        string line;
        while ((line = sr.ReadLine()) != null)
        {
            string[] keyValueStrings = line.Split(separator);
            for (int i = 0; i < keyValueStrings.Length; i++)
                keyValueStrings[i] = keyValueStrings[i].Trim();
            settingsRead.Add(keyValueStrings);
        }
    }
    // Later you get your key/value strings simply by index
    string[] myKeyValueStrings = settingsRead[index];
    

    As you may have noticed, you can have not necessarily just pairs of key/value in your ListArray. The item arrays may be of any length, like in jagged array.

提交回复
热议问题