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


GitHub Issue Reference

写入 CSV 时,我更喜欢手动将对象映射到与我预期的列完全匹配的 class。它非常灵活、明确,而且编写 CSV class 地图所需的代码也不多。在你的情况下,它看起来像这样

var customerRows = customers.Select(c => new {RecID = c.ID + c.Name, c.ID, c.Name });

然后将 customerRows 写入 CSV。