我使用库CsvHelper编写CSV。我有不包含所有记录的对象,必须将空字段添加到CSV中。例如:

public class Example
{
   public string Test1 { get; set; }
   public string Test2 { get; set; }
}


这张地图:

public class ExampleMap : ClassMap<Example>
{
    public ExampleMap()
    {
      Map(ex=>ex.Test1).Index(0);
      Map(ex=>ex.Test2).Index(4);
    }
}


我想要这个对象

new Example() { Test1="dummy", Test2="field" };


此csv结果:

dummy;;;field


如果有人可以帮助我,我真的很难解决这个问题:)
非常感谢

最佳答案

似乎违反了在两者之间具有显式列映射的概念。

似乎CsvHelper库不支持这种情况,因为the library simply uses indices in ascending order用于定义的列映射(“映射的列”)。

但是,如果确实需要具有这样的输出,则可以按如下方式引入“未使用”(保留)列:

internal sealed class Example
{
    public string Test1 { get; set; }
    public string Test2 { get; set; }

    public string Reserved1 { get; set; }
    public string Reserved2 { get; set; }
}

internal sealed class ExampleMap : CsvClassMap<Example>
{
    public ExampleMap()
    {
        Map(ex => ex.Test1).Index(0);
        Map(ex => ex.Reserved1).Index(1);
        Map(ex => ex.Reserved2).Index(2);
        Map(ex => ex.Test2).Index(3);
    }
}

关于c# - 在CSVHelper中添加虚拟空字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25794840/

10-09 02:28