/// <summary>
        /// Generate string to create eventin.
        /// </summary>
        /// <param name="fieldValuesDictionary"></param>
        /// <returns></returns>
        private string GenerateString(Dictionary <string, EventMapFieldValue> fieldValuesDictionary)
        {
            StringBuilder resultString = new StringBuilder();

            Collection <int> sequences = new Collection <int>();

            foreach (KeyValuePair <string, EventMapFieldValue> keyValyePair in fieldValuesDictionary)
            {
                EventMapFieldValue currentFieldValue = keyValyePair.Value;
                if (!sequences.Contains(currentFieldValue.Sequence))
                {
                    sequences.Add(currentFieldValue.Sequence);
                }
            }
            int[] sequenceArray = sequences.ToArray();
            //positionArray[0] = 10;
            //positionArray[0] = 1;
            for (int i = 0; i < sequenceArray.Length; i++)
            {
                int    sequence   = sequenceArray[i];
                string partString = GenerateStringForSequence(fieldValuesDictionary, sequence);
                if (i == 0)
                {
                    resultString.Append(partString);
                }
                else
                {
                    resultString.Append("^").Append(partString);
                }
            }

            Array.Sort(sequenceArray);
            return(resultString.ToString());
        }
        private string GenerateStringForSequence(Dictionary <string, EventMapFieldValue> fieldValuesDictionary, int sequence)
        {
            Collection <string> resultValues = new Collection <string>();

            foreach (KeyValuePair <string, EventMapFieldValue> keyValyePair in fieldValuesDictionary)
            {
                EventMapFieldValue currentFieldValue = keyValyePair.Value;
                if (currentFieldValue.Sequence == sequence)
                {
                    int position = currentFieldValue.Position;
                    if (position == resultValues.Count + 1)
                    {
                        resultValues.Add(currentFieldValue.FieldValue);
                    }
                    else if (position > resultValues.Count + 1)
                    {
                        for (int i = resultValues.Count + 1; i < position; i++)
                        {
                            resultValues.Add("");
                        }
                        resultValues.Add(currentFieldValue.FieldValue);
                    }
                    else
                    {
                        resultValues[sequence - 1] = currentFieldValue.FieldValue;
                    }
                }
            }

            StringBuilder resultString = new StringBuilder();

            if (resultValues.Count > 0)
            {
                resultString.Append(resultValues[0]);
            }

            for (int i = 1; i < resultValues.Count; i++)
            {
                resultString.Append("^").Append(resultValues[i]);
            }

            return(resultString.ToString());
        }