Csvhelper: Can we writing to csv from List<string[]> using csvhelper ?

Created on 20 Mar 2016  路  1Comment  路  Source: JoshClose/CsvHelper

Sorry for noob question, Iam still learning so bear with me.

My case is I want to parsing data csv ( 3 column, 2000rows ) and randomize it then take only 200row to write to csv again. ( In case my limited knowledge in C#, and yep google too. I failed using csv helper and end up using vb fileIO ).

Back my question can CSV helper write csv from List

My code so far is

        List<string[]> datacsv = new List<string[]>();
        TextFieldParser parser = new TextFieldParser(AppDomain.CurrentDomain.BaseDirectory + @"data.csv", System.Text.Encoding.GetEncoding("euc-jp"));
        parser.SetDelimiters(",");

        while (!parser.EndOfData)
        {
            string[] words = parser.ReadFields();
            string databaru =  words.ToString();
            datacsv.Add(words);
        }


        var rnd = new Random();
        List<string[]> result = datacsv.OrderBy(item => rnd.Next()).ToList();
        //List<string> allrow = ReadInCSV(AppDomain.CurrentDomain.BaseDirectory + @"data.csv");

thanks you :)

Most helpful comment

Here is an example of writing each field by hand.

void Main()
{
    using (var stream = new MemoryStream())
    using (var reader = new StreamReader(stream))
    using (var writer = new StreamWriter(stream))
    using (var csv = new CsvWriter(writer))
    {
        var list = new List<string[]>
        {
            new[] { "1", "2" },
            new[] { "3", "4" }
        };

        foreach (var item in list)
        {
            foreach (var field in item)
            {
                csv.WriteField(field);
            }
            csv.NextRecord();
        }
        writer.Flush();
        stream.Position = 0;

        reader.ReadToEnd().Dump();
    }
}

>All comments

Here is an example of writing each field by hand.

void Main()
{
    using (var stream = new MemoryStream())
    using (var reader = new StreamReader(stream))
    using (var writer = new StreamWriter(stream))
    using (var csv = new CsvWriter(writer))
    {
        var list = new List<string[]>
        {
            new[] { "1", "2" },
            new[] { "3", "4" }
        };

        foreach (var item in list)
        {
            foreach (var field in item)
            {
                csv.WriteField(field);
            }
            csv.NextRecord();
        }
        writer.Flush();
        stream.Position = 0;

        reader.ReadToEnd().Dump();
    }
}
Was this page helpful?
0 / 5 - 0 ratings