我使用的是CSVHelper,我有以下MAP:
public class UserModelCsvMapper : CsvClassMap<UserModel> {
public override void CreateMap() {
Map(x => x.Name).Name("Name");
Map(x => x.Email).Name("Email");
Map(x => x.Linked).Name("Linked");
} // CreateMap
} // UserModelCsvMapper
我想在我的CSV上有更多2列:
Country > UK (Always UK)
Code > "" (Always an empty string)
这可能吗?
谢谢
答案 0 :(得分:0)
您可以使用“常量”值在读取和写入时始终将字段值默认为默认值。
Map(x => x.Country).Name("Country").Constant("UK");
Map(x => x.Code).Name("Code").Constant("");
文档:https://joshclose.github.io/CsvHelper/examples/configuration/class-maps/constant-value
答案 1 :(得分:0)
据我所知,您通常不能(确实是老文章),作者建议here在您的班级中创建固定属性。那可能是最好的解决方案。扩展(通过继承或直接添加额外的属性)您的类,并填充固定值。
还有另一个选项,它可能在特定情况下有效,并且正在使用Map()
(请参阅here),这将允许您尽我所能执行Map().Name("Code")
之类的操作在这些字段按声明的值顺序移动时告诉它们,在您的示例中这是可以的,但是如果您先声明Code,它将在生成的.csv中填充Name的值(我曾尝试使用{{ 1}},但无济于事。而且我看不到映射固定值的方法(执行类似Map().Name("Code").Index(0)
的操作会产生错误)。
答案 2 :(得分:-2)
如果我理解你的问题,你的课程应该是这样的:
public class UserModelCsvMapper : CsvClassMap<UserModel> {
public override void CreateMap() {
Map(x => x.Name).Name("Name");
Map(x => x.Email).Name("Email");
Map(x => x.Linked).Name("Linked");
Map(x => "UK").Name("Country");
Map(x => "").Name("Code");
} // CreateMap
} // UserModelCsvMapper