private static void WriteRow(StringBuilder targetText, SummaryRow row)
 {
     targetText
     .Append(row.Id + ",")
     .Append(row.TimeZone + ",")
     .Append(row.From + ",")
     .Append(row.To + ",")
     .Append(row.Scheduled + ",")
     .Append(row.Hours + ",")
     .Append(row.Rating + ",")
     .Append(row.Comments + ",")
     .Append(row.FrameRate + ",")
     .Append(row.Snore + ",")
     .Append(row.Noise + ",")
     .Append(row.Cycles + ",")
     .Append(row.DeepSleep + ",")
     .Append(row.LengthAdjust + ",")
     .Append(row.Geo)
     .AppendLine();
 }
        private static void ReadRow(string[] lines, int i, List <SummaryRow> rows)
        {
            try
            {
                var reader = new Reader();

                var line = lines[i];

                if (!line.StartsWith("Id,"))
                {
                    return;
                }

                var row = new SummaryRow();

                var rowIndex = i + 1;

                row.Id           = reader.GetLong(lines, rowIndex, IdIndex);
                row.TimeZone     = reader.GetString(lines, rowIndex, TimeZoneIndex);
                row.From         = reader.GetDateTime(lines, rowIndex, FromIndex);
                row.To           = reader.GetDateTime(lines, rowIndex, ToIndex);
                row.Scheduled    = reader.GetDateTime(lines, rowIndex, ScheduledIndex);
                row.Hours        = reader.GetFloat(lines, rowIndex, HoursIndex);
                row.Rating       = reader.GetFloat(lines, rowIndex, RatingIndex);
                row.Comments     = reader.GetString(lines, rowIndex, CommentsIndex);
                row.FrameRate    = reader.GetInt(lines, rowIndex, FrameRateIndex);
                row.Snore        = reader.GetInt(lines, rowIndex, SnoreIndex);
                row.Noise        = reader.GetFloat(lines, rowIndex, NoiseIndex);
                row.Cycles       = reader.GetInt(lines, rowIndex, CyclesIndex);
                row.DeepSleep    = reader.GetFloat(lines, rowIndex, DeepSleepIndex);
                row.LengthAdjust = reader.GetInt(lines, rowIndex, LengthAdjustIndex);
                row.Geo          = reader.GetString(lines, rowIndex, GeoIndex);

                rows.Add(row);
            }
            catch (Exception ex)
            {
                Console.WriteLine("ERROR: Failed to load row {0} due to the following error: /r/n {1}", i, ex.Message);
            }
        }