I have some data in csv like
string[][] items = new string[][] {
new string[] { "dog", "3" },
new string[] { "cat", "2" },
new string[] { "bird", "1" }
};
now I want to convert the input into properly formatted CSV lines and return them - expected output:
string[] csvLines = {"\"dog\";\"3\"", "\"cat\";\"2\"", "\"bird\";\"1\""};
or file:
"dog";"3"
"cat";"2"
"bird";"1"
what I've tried:
public static IEnumerable<string> GetCSVLines(string[][] list)
{
using (MemoryStream stream = new MemoryStream())
using (StreamWriter writer = new StreamWriter(stream))
using (CsvHelper.CsvWriter csv = new CsvHelper.CsvWriter(writer))
{
foreach (var item in list)
{
foreach (var field in item)
{
csv.WriteField(field);
}
yield return csv.Record; //??
csv.NextRecord();
}
}
}
Note: I can't just use string.Join() because the fields could contain ", delimiter ; or linebreaks.
SelectandString.Formatwill produce the outputlist.Select(pair=>String.Format("\"{0}\";\"{1}\"",pair[0],pair[1])).ToArray()?