// ---------------------------------------------------------------------------------------- /// <!-- ConvertValuesAndKeys --> /// <summary> /// Returns a KeyListFile identifying which values are used by which keys and /// </summary> /// <returns></returns> public KeyListFile ConvertValuesAndKeys(char keyDelimiter, char itemDelimiter) { // -------------------------------------------------------------------------- // Initialize the conversion // -------------------------------------------------------------------------- KeyListFile valuesBecomeKeys = new KeyListFile(keyDelimiter, itemDelimiter); foreach (string formerKey in this.Keys) { List <string> formerValue = this[formerKey]; for (int i = 0; i < formerValue.Count; ++i) { if (!valuesBecomeKeys.ContainsKey(formerValue[i])) { valuesBecomeKeys.Add(formerValue[i], new List <string>()); } } } // -------------------------------------------------------------------------- // Fill the conversion // -------------------------------------------------------------------------- foreach (string formerKey in this.Keys) { List <string> formerValue = this[formerKey]; for (int i = 0; i < formerValue.Count; ++i) { valuesBecomeKeys[formerValue[i]].Add(formerKey); } } return(valuesBecomeKeys); }