Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

c#

list

insert

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 which, of course, doesn't allow for this functionality. What would be the best approach?

UPDATE: Also, I do need the ability to lookup by the key.

For example...oversimplified and pseudocoded but should convey the point

// existing Hashtable myHashtable.Add("somekey1", "somevalue1"); myHashtable.Add("somekey2", "somevalue2"); myHashtable.Add("somekey3", "somevalue3");  // Some other object that will allow me to insert a new key/value pair. // Assume that this object has been populated with the above key/value pairs. oSomeObject.Insert("newfirstkey","newfirstvalue"); 

Thanks in advance.

like image 484
Clay Avatar asked Apr 30 '10 14:04

Clay


People also ask

How do you add data to a key-value pair?

To add key-value pair in C# Dictionary, firstly declare a Dictionary. IDictionary<int, string> d = new Dictionary<int, string>(); Now, add elements with KeyValuePair.

How do you assign a value to an object key?

Object keys can be dynamically assigned in ES6 by placing an expression in square brackets. Syntax: var key="your_choice"; var object = {}; object[key] = "your_choice"; console. log(object);


2 Answers

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.

like image 166
Ian P Avatar answered Sep 29 '22 05:09

Ian P


Maybe the OrderedDictonary will help you out.

like image 33
Matthew Jones Avatar answered Sep 29 '22 04:09

Matthew Jones