CsvHelper - 如何为不在 Class 中的列创建 CsvClass 映射
CsvHelper - How to Create a CsvClassMap for a Column Not in the Class
如何为我的 class 中不存在的 属性 添加一列到我的 CsvClass 地图?
Class 写入文件
public class Customer {
public int ID { get; set; }
public string Name { get; set; }
}
CsvClass地图
public sealed class CustomerMap : CsvClassMap<Customer>
{
public CustomerMap() {
Map(r => r.ID).Index(1)
Map(r => r.Name).Index(2)
//need a column called Rec ID that is simple concatenation of ID and Name
Map(r => ???).Index(0).Name("Rec ID")
}
}
所需的 CSV 输出
Rec ID,ID,Name
1Bob,1,Bob
写入 CSV 时,我更喜欢手动将对象映射到与我预期的列完全匹配的 class。它非常灵活、明确,而且编写 CSV class 地图所需的代码也不多。在你的情况下,它看起来像这样
var customerRows = customers.Select(c => new {RecID = c.ID + c.Name, c.ID, c.Name });
然后将 customerRows 写入 CSV。
如何为我的 class 中不存在的 属性 添加一列到我的 CsvClass 地图?
Class 写入文件
public class Customer {
public int ID { get; set; }
public string Name { get; set; }
}
CsvClass地图
public sealed class CustomerMap : CsvClassMap<Customer>
{
public CustomerMap() {
Map(r => r.ID).Index(1)
Map(r => r.Name).Index(2)
//need a column called Rec ID that is simple concatenation of ID and Name
Map(r => ???).Index(0).Name("Rec ID")
}
}
所需的 CSV 输出
Rec ID,ID,Name
1Bob,1,Bob
写入 CSV 时,我更喜欢手动将对象映射到与我预期的列完全匹配的 class。它非常灵活、明确,而且编写 CSV class 地图所需的代码也不多。在你的情况下,它看起来像这样
var customerRows = customers.Select(c => new {RecID = c.ID + c.Name, c.ID, c.Name });
然后将 customerRows 写入 CSV。