3

我正在使用 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)

这可能吗?

谢谢你

4

3 回答 3

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

于 2019-03-20T16:25:07.037 回答
0

据我所知,您通常不能,确实(这是一篇旧帖子)作者建议在这里在您的班级中创建一个固定属性。这可能是最好的解决方案;扩展(通过继承或直接添加额外属性)您的类并填充固定值。

还有另一个选项,它可能在特定情况下工作并且正在使用Map()(请参阅此处),这将允许您执行类似的操作Map().Name("Code"),但尽我所能告诉这些,而这些字段按照声明的值正在移动的顺序出现,在您的示例可以,但是如果您首先声明 Code ,它将在生成的 .csv 中填充 Name 的值(我确实尝试使用 Map().Name("Code").Index(0)但无济于事)。而且我看不到映射固定值的方法(执行类似Map(m => "UK").Name("Country")生成错误的操作)。

于 2020-07-30T16:33:48.923 回答
-3

如果我正确理解了您的问题,您的课程应该如下所示:

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
于 2014-10-14T12:08:46.987 回答