我有一个非常简单的类,我想写入 CSV。例如,它包含一个“列表”。我有映射工作,如果我添加一个 map 语句来提供索引的名称(例如 'Index(2, 5).Name("The List ")'),它就可以工作。但是,列名会出现“列表 1、列表 2、列表 3、列表 4”。
我看到一个旧帖子说无法覆盖这些名称。这还是真的吗?我试过玩“.Convert”但没有成功。我在文档中看到了我无法找到的示例参考。
归根结底,我想要的只是一张能上这样一堂课的地图:
public class SimpleListClass
{
public int Id { get; set; }
public string Name { get; set; }
public List<int> TheCollection { get; set; }
}
让我覆盖“TheCollection”的列名。
非常感谢任何/所有帮助!
谢谢!
答案 0 :(得分:0)
我认为不可能以您想要的方式覆盖名称。我知道让它工作的唯一方法是手动写出标题。
void Main()
{
var records = new List<SimpleListClass>
{
new SimpleListClass { Id = 1, Name = "one", TheCollection = new List<int>{1,2,3,4} },
};
var config = new CsvConfiguration(CultureInfo.InvariantCulture)
{
HasHeaderRecord = false
};
//using (var writer = new StreamWriter("path\\to\\file.csv"))
using (var csv = new CsvWriter(Console.Out, config))
{
csv.Context.RegisterClassMap<SimpleLIstClassMap>();
csv.WriteField("Id");
csv.WriteField("Name");
for (int i = 1; i < 5; i++)
{
csv.WriteField($"Pressure {i} (kPa)");
}
csv.NextRecord();
csv.WriteRecords(records);
}
}
public class SimpleListClass
{
public int Id { get; set; }
public string Name { get; set; }
public List<int> TheCollection { get; set; }
}
public class SimpleLIstClassMap : ClassMap<SimpleListClass>
{
public SimpleLIstClassMap()
{
Map(x => x.Id);
Map(x => x.Name);
Map(x => x.TheCollection).Index(2, 5);
}
}