Associative arrays in C# via IDictionary
	There’re no associative arrays (hash) in common sense. There are Dictionaries for this. It’s a very good tool if you want to use link "key-value". Using Dictionaries, keys and values can be different types.
For creating associative array in C# you should initialize IDictionary and set types for keys and values:
            //initialize IDictionary 
            IDictionary<string, int> arrayStat = new Dictionary<string, int>();
            
            //add values to IDictionary arrayStat
            arrayStat.Add("blue", 4);
            arrayStat.Add("red", 2);
            arrayStat.Add("green", 10);
            //Display keys and values of arrayStat Idictionary
            foreach (KeyValuePair<string, int> elm in arrayStat)
            {
                Console.WriteLine("Key: " + elm.Key + ", value: " + elm.Value);
            }
The result is:
Keys in IDictionary must be unique. If you try to add element with the existing key (for example, if you add string "arrayStat.Add("green", 20);" ), you will get the error:
Unhandled Exception: System.ArgumentException: An item with the same key has already been added. at System.Collections.Generic.Dictionary '2.Insert(TKey key, TValue value, Boolean add) at dicts.Program.Main(String[] args) in c:\Projects\Visual Studio 2013\Projects\dicts\dicts\Program.cs:line 19
If you fill IDictionary manually, I don’t think you see this error. But if you work with database results or calculations, it’s easy to get this error.
Let’s try to add keys-values to IDictionary from List.
We have a class SimpleClass:
        public class SimpleClass
        {
            public int quantity {get; set;}
            public string Color { get; set; }
        }        
Let’s initialize List<SimpleClass> and add values to it:
           //Initialize Collection List<SimpleClass>
            List<SimpleClass> myItems = new List<SimpleClass>();
            myItems.Add(new SimpleClass { quantity = 4, Color = "blue" });
            myItems.Add(new SimpleClass { quantity = 2, Color = "green" });
            myItems.Add(new SimpleClass { quantity = 8, Color = "yellow" });
            myItems.Add(new SimpleClass { quantity = 12, Color = "cyan" });
            myItems.Add(new SimpleClass { quantity = 3, Color = "magenta" });
            myItems.Add(new SimpleClass { quantity = 15, Color = "black" });
Now let’s fill IDictionary from List<SimpleClass>:
            //add values to IDictionary arrayStat from List<SimpleClass> myItems
            foreach (SimpleClass item in myItems)
            {
                arrayStat.Add(item.Color, item.quantity);
            }
            
            //Display keys and values of arrayStat Idictionary
            foreach (KeyValuePair<string, int> elm in arrayStat)
            {
                Console.WriteLine("Key: " + elm.Key + ", value: " + elm.Value);
            }
The result is expectable:
Now let’s modify collection List<SipleClass> and build and execute program:
            //Initialize Collection List<SimpleClass>
            List<SimpleClass> myItems = new List<SimpleClass>();
            myItems.Add(new SimpleClass { quantity = 4, Color = "blue" });
            myItems.Add(new SimpleClass { quantity = 2, Color = "green" });
            myItems.Add(new SimpleClass { quantity = 8, Color = "yellow" });
            myItems.Add(new SimpleClass { quantity = 12, Color = "cyan" });
            myItems.Add(new SimpleClass { quantity = 3, Color = "magenta" });
            myItems.Add(new SimpleClass { quantity = 15, Color = "black" });
            myItems.Add(new SimpleClass { quantity = 341, Color = "blue" });
            myItems.Add(new SimpleClass { quantity = 22, Color = "green" });
            myItems.Add(new SimpleClass { quantity = 12, Color = "yellow" });
            myItems.Add(new SimpleClass { quantity = 123, Color = "cyan" });
            myItems.Add(new SimpleClass { quantity = 432, Color = "magenta" });
            myItems.Add(new SimpleClass { quantity = 34, Color = "black" });
Again we have error:
Unhandled Exception: System.ArgumentException: An item with the same key has already been added. at System.Collections.Generic.Dictionary '2.Insert(TKey key, TValue value, Boolean add) at dicts.Program.Main(String[] args) in c:\Projects\Visual Studio 2013\Projects\dicts\dicts\Program.cs:line 42
The error is in "arrayStat.Add(item.Color, item.quantity);". To fix the error, you need to check if the key already exists.
            //add and upate values to IDictionary arrayStat from List<SimpleClass> myItems
            foreach (SimpleClass item in myItems)
            {
                if (!arrayStat.ContainsKey(item.Color))
                {
                    //Add new IDictionary value
                    arrayStat.Add(item.Color, item.quantity);
                }
                else
                {
                    //Update existing IDictionary value
                    arrayStat[item.Color] = item.quantity;
                }
            }
Summary:
Initialize IDictionary:
IDictionary<string, int> arrayStat = new Dictionary<string, int>();
Add item to IDictionary:
arrayStat.Add(key, value);
Update item to IDictionary:
arrayStat[key] = value;



			Pipeline sequence in PowerShell