CsvHelper:将列表<string>写入CSV

Arm*_*rmz 3 c# csvhelper

我想知道如何使用 CsvHelper 将列表写入 CSV。我这里看过了。

我在 CSV 类中有以下属性

public class CSV
{
    public int? Id { get; set; }
    public List<string> Header1 { get; set; }
    public string Header2 { get; set; }
    public string Header3 { get; set; }
    public string Header4 { get; set; }
    public long? Header5 { get; set; }
    public long? Header6 { get; set; }
    public long? Header7 { get; set; }
    public string Header8 { get; set; }
    public List<string> Header9 { get; set; }
    public List<string> Header10 { get; set; }
    public List<string> Header11 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

写入 CSV

var records = new List<CSV>
{
    new CSV { Header1 = new List<string>{ "value1", "value2" } }
};

using (var writer = new StreamWriter("path\\to\\file.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(records);
}
Run Code Online (Sandbox Code Playgroud)

最终结果应该是这样的

Header1
value1,value2
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激。

Dav*_*cht 5

我猜你正在寻找类似的东西。这将从列表中创建一个逗号分隔的字符串Header1

public class Program
{
    static void Main(string[] args)
    {        
        var records = new List<CSV>
        {
            new CSV { Id = 1, Header1 = new List<string>{ "value1", "value2" } }
        };

        using (var csv = new CsvWriter(Console.Out, CultureInfo.InvariantCulture))
        {
            csv.Context.RegisterClassMap<CSVMap>();
            csv.WriteRecords(records);
        }

        Console.ReadKey();
    }
}

public class CSVMap : ClassMap<CSV>
{
    public CSVMap()
    {
        AutoMap(CultureInfo.InvariantCulture);
        Map(m => m.Header1).Convert(args => string.Join(",", args.Value.Header1)).Index(0);
    }
}

public class CSV
{
    public int? Id { get; set; }
    public List<string> Header1 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

给你一个输出

Id,Header1
1,"value1,value2"
Run Code Online (Sandbox Code Playgroud)

  • 对于在版本 [20.0.0](https://joshclose.github.io/CsvHelper/change-log/) 之后使用 CsvHelper 遇到此答案的任何人,“.ConvertUsing”现在是“.Convert”。另外,“csv.Configuration.RegisterClassMap&lt;CSVMap&gt;();”将是“csv.Context.RegisterClassMap&lt;CSVMap&gt;();” (2认同)