using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Collections.ObjectModel;
using CsvHelper.Configuration;
using CsvHelper.Configuration.Attributes;
using CsvHelper.Expressions;
using CsvHelper.TypeConversion;
public string Column1 { get; set; }
public string Column2 { get; set; }
public string Column3 { get; set; }
public static void Test()
var records = new List<Model>
{ new () { Column1 = "Value \"1\"", Column2 = "Value \"2\"", Column3 = "Value \"3\"" } },
var config = new CsvConfiguration(CultureInfo.InvariantCulture)
MissingFieldFound = null,
PrepareHeaderForMatch = args => args.Header.Trim(),
TrimOptions = TrimOptions.Trim,
LineBreakInQuotedFieldIsBadData = false,
using var writer = new StringWriter();
using (var csv = new CsvWriter(writer, config))
csv.WriteRecords(records);
Console.WriteLine(writer);
public static void Main()
Console.WriteLine("Environment version: {0} ({1}), {2}.", System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription , Environment.Version, Environment.OSVersion);
Console.WriteLine("OS Version: {0}, NewLine: {1}", System.Environment.OSVersion, JsonConvert.SerializeObject(Environment.NewLine));
Console.WriteLine("{0} version: {1}", typeof(CsvReader).Assembly.GetName().Name, typeof(CsvReader).Assembly.FullName);
Console.WriteLine("Failed with unhandled exception: ");