This quick project is example of simple Data transformation. Hashtable’s values containing a comma deliminated list of strings gets turned into a distinct list of keys in another Hashtable. And, the numbers (keys of initial Hashtable) are accumulated into the values of the new Hashtable. Creating an inverted Hashtable.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace HashInversion { class Program { static void Main(string[] args) { Hashtable num_2_Letters_Hash = new Hashtable(); Hashtable letters_2_num_Hash = new Hashtable(); num_2_Letters_Hash.Add(1, "a,c,d"); num_2_Letters_Hash.Add(6, "d,e"); num_2_Letters_Hash.Add(13, "a,d,j"); num_2_Letters_Hash.Add(29, "c,e,d"); num_2_Letters_Hash.Add(7, "j"); num_2_Letters_Hash.Add(9, "e,c,a"); num_2_Letters_Hash.Add(11, "c,d,f,j"); foreach (var key in num_2_Letters_Hash.Keys) { string content = num_2_Letters_Hash[key].ToString(); string [] letters = content.Split(','); for (int i = 0; i < letters.Length; i++) { if ( letters_2_num_Hash.ContainsKey(letters[i].ToString())) { string previous_content = letters_2_num_Hash[letters[i]].ToString(); letters_2_num_Hash[letters[i]] = previous_content + "," + key; } else { letters_2_num_Hash.Add(letters[i],""+key); } } } Console.WriteLine(); Console.WriteLine("before"); foreach (var key in num_2_Letters_Hash.Keys) {Console.WriteLine(key + " " + num_2_Letters_Hash[key]);} Console.WriteLine("after"); foreach (var key in letters_2_num_Hash.Keys) {Console.WriteLine(key + " " + letters_2_num_Hash[key]);} } } } |