пропуск строк в файле CSV до определенного слова С#

Я новичок в кодировании на С#, и я действительно пытался найти ответ на любом форуме. Я использую CSVHelper для чтения CSV-файла и хочу пропустить определенное количество строк с начала файла до определенного слова. Теперь мой код выдает следующее сообщение об ошибке: System.ObjectDisposedException: невозможно прочитать из закрытого TextReader. Помоги мне, пожалуйста :

 private void cmdLoad_Click(object sender, EventArgs e)
    {
        OpenFileDialog OFDReader = new OpenFileDialog()
        { };
        if (OFDReader.ShowDialog() == DialogResult.OK)
        {

            txtbox.Text = OFDReader.FileName;
        }
        var config = new CsvConfiguration(CultureInfo.InvariantCulture)
        {
            Delimiter = ";", // Set delimiter
            HasHeaderRecord = true,
            //ShouldSkipRecord = (row) => row.Record[0].Contains("Date/Time"),
        };
        
        using (var reader = new StreamReader(OFDReader.FileName))
        using (var csv = new CsvReader(reader, config))
        {               
           //search for Line to start reader
           string record = "Date/Time";

            while (csv.Read())
            {
                if (csv.Read().Equals(record))
                {
                    csv.Read();
                    csv.ReadHeader();
                    break;
                }
                using (var dr = new CsvDataReader(csv))
                {
                    var dt = new DataTable();
                    dt.Load(dr);
                    dataGridView1.DataSource = dt; // Set datagridview source to datatable
                }
            }
        }
    }
}

}


person xKara    schedule 17.07.2021    source источник
comment
Проверьте это: stackoverflow.com/questions/ 11035977/   -  person S2L    schedule 17.07.2021
comment
Спасибо за поддержку.   -  person xKara    schedule 18.07.2021


Ответы (1)


Я считаю, что вам просто нужно вырваться из while (csv.Read()), когда вы найдете текст даты/времени. CsvReader сделает все остальное оттуда.

var config = new CsvConfiguration(CultureInfo.InvariantCulture)
{
     Delimiter = ";", // Set delimiter
     HasHeaderRecord = true
};

using (var reader = new StreamReader(OFDReader.FileName))
using (var csv = new CsvReader(reader, config))
{
    //search for Line to start reader
    string record = "Date/Time";

    while (csv.Read())
    {
        if (csv.Context.Parser.RawRecord.Trim() == record)
        {
            break;
        }                           
    }
    using (var dr = new CsvDataReader(csv))
    {
        var dt = new DataTable();
        dt.Load(dr);
        dt.Dump();
    }
}

person David Specht    schedule 20.07.2021