Csvhelper: csv . рдХреЛ рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 23 рдЕрдХреНрддреВре░ 2019  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: JoshClose/CsvHelper

рдХреНрдпрд╛ рдХреЛрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдЬреЛ рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ .csv рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@johnyesberg рдУрд╣, рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдФрд░ рд╕реНрддрдВрднреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

void Main()
{
    var dt = new DataTable();
    dt.Columns.Add("Id", typeof(int));
    dt.Columns.Add("Name", typeof(string));

    var row = dt.NewRow();
    row["Id"] = 1;
    row["Name"] = "one";
    dt.Rows.Add(row);

    row = dt.NewRow();
    row["Id"] = 2;
    row["Name"] = "two";
    dt.Rows.Add(row);

    using (var writer = new StringWriter())
    using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
    {       
        foreach (DataColumn dc in dt.Columns)
        {           
            csv.WriteField(dc.ColumnName);
        }
        csv.NextRecord();

        foreach (DataRow dr in dt.Rows)
        {           
            foreach (DataColumn dc in dt.Columns)
            {
                csv.WriteField(dr[dc]);
            }
            csv.NextRecord();
        }

        writer.ToString().Dump();
    }
}

рдпрд╛ рдЖрдк DataReader рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

void Main()
{
    var dt = new DataTable();
    dt.Columns.Add("Id", typeof(int));
    dt.Columns.Add("Name", typeof(string));

    var row = dt.NewRow();
    row["Id"] = 1;
    row["Name"] = "one";
    dt.Rows.Add(row);

    row = dt.NewRow();
    row["Id"] = 2;
    row["Name"] = "two";
    dt.Rows.Add(row);

    using (var writer = new StringWriter())
    using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
    {
        using (var reader = dt.CreateDataReader())
        {
            for (var i = 0; i < reader.FieldCount; i++)
            {
                csv.WriteField(reader.GetName(i));
            }
            csv.NextRecord();

            while (reader.Read())
            {
                csv.WriteField(reader.GetFieldValue<int>("Id"));
                csv.WriteField(reader.GetFieldValue<string>("Name"));
                csv.NextRecord();
            }
        }

        writer.ToString().Dump();
    }
}

рдЕрдЧрд░ рдХреЛрдИ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред рдореИрдВ рдбреЗрдЯрд╛ рдЯреЗрдмрд▓ рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдБред

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рд╛рдп @ рдЬреЛрд╢рдХреНрд▓реЛрдЬрд╝ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рдЧрд┐рдореЛ рд╕реАрдПрд╕рд╡реА рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдбреЗрдЯрд╛рдЯреЗрдмрд▓реНрд╕ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛

@johnyesberg рдУрд╣, рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдФрд░ рд╕реНрддрдВрднреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

void Main()
{
    var dt = new DataTable();
    dt.Columns.Add("Id", typeof(int));
    dt.Columns.Add("Name", typeof(string));

    var row = dt.NewRow();
    row["Id"] = 1;
    row["Name"] = "one";
    dt.Rows.Add(row);

    row = dt.NewRow();
    row["Id"] = 2;
    row["Name"] = "two";
    dt.Rows.Add(row);

    using (var writer = new StringWriter())
    using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
    {       
        foreach (DataColumn dc in dt.Columns)
        {           
            csv.WriteField(dc.ColumnName);
        }
        csv.NextRecord();

        foreach (DataRow dr in dt.Rows)
        {           
            foreach (DataColumn dc in dt.Columns)
            {
                csv.WriteField(dr[dc]);
            }
            csv.NextRecord();
        }

        writer.ToString().Dump();
    }
}

рдпрд╛ рдЖрдк DataReader рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

void Main()
{
    var dt = new DataTable();
    dt.Columns.Add("Id", typeof(int));
    dt.Columns.Add("Name", typeof(string));

    var row = dt.NewRow();
    row["Id"] = 1;
    row["Name"] = "one";
    dt.Rows.Add(row);

    row = dt.NewRow();
    row["Id"] = 2;
    row["Name"] = "two";
    dt.Rows.Add(row);

    using (var writer = new StringWriter())
    using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
    {
        using (var reader = dt.CreateDataReader())
        {
            for (var i = 0; i < reader.FieldCount; i++)
            {
                csv.WriteField(reader.GetName(i));
            }
            csv.NextRecord();

            while (reader.Read())
            {
                csv.WriteField(reader.GetFieldValue<int>("Id"));
                csv.WriteField(reader.GetFieldValue<string>("Name"));
                csv.NextRecord();
            }
        }

        writer.ToString().Dump();
    }
}

рдЕрдЧрд░ рдХреЛрдИ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред рдореИрдВ рдбреЗрдЯрд╛ рдЯреЗрдмрд▓ рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдБред

рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

RifS picture RifS  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

GraceYuJuSong picture GraceYuJuSong  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

JoshClose picture JoshClose  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

shinriyo picture shinriyo  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ruslanss picture ruslanss  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ