/// <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()); }