Example #1
0
        // ----------------------------------------------------------------------------------------
        /// <!-- 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);
        }