using System.Collections.Generic;
public static void Main()
Console.WriteLine("Hello World");
string value1 = "This is a test";
Console.WriteLine("value1=" + value1);
Console.WriteLine("formatted1=" + FormatValueForCSV(value1));
Console.WriteLine("----------");
string value2 = "This is a " + (char)34 + "test" + (char)34 + " 2";
Console.WriteLine("value2=" + value2);
Console.WriteLine("formatted2=" + FormatValueForCSV(value2));
Console.WriteLine("----------");
string value3 = "This " + (char)34 + "is" + (char)34 + " a " + (char)34 + "test" + (char)34 + " 2";
Console.WriteLine("value3=" + value3);
Console.WriteLine("formatted3=" + FormatValueForCSV(value3));
Console.WriteLine("----------");
List<TestItem> items = new List<TestItem>();
var item = new TestItem();
item.Name = "Jason Snelders";
item.DoB = new DateTime(1981, 1, 14);
item.Message = "Hello world. Jason's world. \\Onky!";
item.Name = "Damelza Snelders";
item.DoB = new DateTime(1981, 7, 15);
string csv = ServiceStack.Text.CsvSerializer.SerializeToString<List<TestItem>>(items);
Console.WriteLine("ToCsv=");
Console.WriteLine("----------");
public string Name { get; set; } = "";
public int Age { get; set; }
public DateTime DoB { get; set; }
public string Message { get; set; } = "";
private static object ObjectToCSV(object item)
private static string FormatValueForCSV(string value)
formatted = formatted.Replace("\"", "\\\"");
public static string ToCsv<T>(string separator, IEnumerable<T> objectlist)
PropertyInfo[] fields = t.GetProperties();
string header = String.Join(separator, fields.Select(f => f.Name).ToArray());
StringBuilder csvdata = new StringBuilder();
csvdata.AppendLine(header);
foreach (var o in objectlist)
csvdata.AppendLine(ToCsvFields(separator, fields, o));
return csvdata.ToString();
public static string ToCsvFields(string separator, PropertyInfo[] fields, object o)
StringBuilder linie = new StringBuilder();
foreach (var f in fields)
linie.Append("\"" + FormatValueForCSV(x.ToString()) + "\"");