How to insert an item into a key/value pair object?

后端 未结 7 979
长情又很酷
长情又很酷 2021-01-31 13:23

Ok...here\'s a softball question...

I just need to be able to insert a key/value pair into an object at a specific position. I\'m currently working with a Hashtable whic

相关标签:
7条回答
  • 2021-01-31 13:48

    Use a linked list. It was designed for this exact situation.
    If you still need the dictionary O(1) lookups, use both a dictionary and a linked list.

    0 讨论(0)
  • 2021-01-31 13:58

    You could use an OrderedDictionary, but I would question why you would want to do that.

    0 讨论(0)
  • 2021-01-31 14:00

    Maybe the OrderedDictonary will help you out.

    0 讨论(0)
  • 2021-01-31 14:01

    Do you need to look up objects by the key? If not, consider using List<Tuple<string, string>> or List<KeyValuePair<string, string>> if you're not using .NET 4.

    0 讨论(0)
  • 2021-01-31 14:01

    Hashtables are not inherently sorted, your best bet is to use another structure such as a SortedList or an ArrayList

    0 讨论(0)
  • 2021-01-31 14:15
    List<KeyValuePair<string, string>> kvpList = new List<KeyValuePair<string, string>>()
    {
        new KeyValuePair<string, string>("Key1", "Value1"),
        new KeyValuePair<string, string>("Key2", "Value2"),
        new KeyValuePair<string, string>("Key3", "Value3"),
    };
    
    kvpList.Insert(0, new KeyValuePair<string, string>("New Key 1", "New Value 1"));
    

    Using this code:

    foreach (KeyValuePair<string, string> kvp in kvpList)
    {
        Console.WriteLine(string.Format("Key: {0} Value: {1}", kvp.Key, kvp.Value);
    }
    

    the expected output should be:

    Key: New Key 1 Value: New Value 1
    Key: Key 1 Value: Value 1
    Key: Key 2 Value: Value 2
    Key: Key 3 Value: Value 3
    

    The same will work with a KeyValuePair or whatever other type you want to use..

    Edit -

    To lookup by the key, you can do the following:

    var result = stringList.Where(s => s == "Lookup");
    

    You could do this with a KeyValuePair by doing the following:

    var result = kvpList.Where (kvp => kvp.Value == "Lookup");
    

    Last edit -

    Made the answer specific to KeyValuePair rather than string.

    0 讨论(0)
提交回复
热议问题