public virtual string Serialize() { StringBuilder builder = new StringBuilder(); builder.AppendLine("; numberMoves"); builder.AppendLine("\t" + numberMoves); builder.AppendLine("; firstObjective"); builder.AppendLine("\t" + (int)firstObjective); string serializedData = PuzzleData.Serialize(); //Add additionnal tab on each line serializedData.Split(Environment.NewLine.ToCharArray()).Select(x => "\t" + x).Aggregate((i, j) => i + Environment.NewLine + j); builder.Append(serializedData); return(builder.ToString()); }