Limitations

edit
  • Values are strings. There is no mapping between rows and objects and no type conversion: parse the values yourself, with the invariant culture.
  • Asynchronous only. Reading and writing are async methods. There is no synchronous API and no CancellationToken.
  • No trimming and no comments. Spaces around a value are part of the value, and a line that starts with # is a row like any other.
  • No detection. The reader does not guess the separator, the quote character, whether the first row is a header or the encoding. Set Separator, Quote and HasHeaderRow, and pass a TextReader that decodes the right encoding.
  • Case-sensitive column names. row["name"] does not find the column Name; see Rows with a header.
  • No validation. Rows can have any number of values. Check row.Values.Count when the data must have a fixed number of columns.