JoshClose / CsvHelper

Library to help reading and writing CSV files
http://joshclose.github.io/CsvHelper/
Other
4.65k stars 1.05k forks source link

Allow the use of CsvReader after CsvDataReader is disposed. #2175

Open Qwertyluk opened 11 months ago

Qwertyluk commented 11 months ago

Is your feature request related to a problem? Please describe. Allow the use of CsvReader after CsvDataReader is disposed.

Describe the solution you'd like Add CsvDataReader constructor parameter leaveOpen with default value false to decide whether CsvReader should be disposed together with CsvDataReader.

public CsvDataReader(CsvReader csv, DataTable? schemaTable = null, bool leaveOpen = false)
{
    //ctor
}

Additional context Currently, there is no way to prevent CsvReader from being disposed when CsvDataReader is disposed. It would be nice to have such an option and be able to reuse CsvReader after CsvDataReader is diposed:

using (var reader = new StreamReader("path\\to\\file.csv"))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
    using (var dr = new CsvDataReader(csv))
    {
        // do somework with CsvDataReader
        dr.Read();
    }

    // right now, can't reuse CsvReader here because it is already disposed
    //csv.Read();
}