【发布时间】:2021-11-03 03:50:07
【问题描述】:
我有一个人为的 csv 文件
"Id","Name"
"10","Foo"
"Team1Id","Joe"
"Team1Id","Blogs"
"Team2Id","Foo Bar"
public class MyClass
{
public int Id { get; set; }
public string Name { get; set; }
}
public class MyClassMap : CsvHelper.Configuration.ClassMap<MyClass>
{
public MyClassMap()
{
Map(m => m.Id).Name("Id").???Convert???
Map(m => m.Name).Name("Name");
}
}
我想将 Id 列映射到一个 int,所以我想我想自定义转换“Team1Id”和“Team2Id”到一些相关的固定值(“Team1Id”=> -1,“Team2Id”=> - 2)
【问题讨论】:
-
根据文档,您可以滚动自己的 TypeConverter ,例如:joshclose.github.io/CsvHelper/examples/configuration/class-maps/…
-
您是否要剥离非 nUmbers 并使结果为负数的关系,因此 Team278Id 将是 -278?
-
@CaiusJard 我在想,如果字典中有 100,000 个键,您必须全部阅读它们才能确定下一个值。但是有办法解决这个问题,所以我删除了评论。
-
@stuartd 啊,有道理.. 是的,我想我会保持配对号码
nextId,如果我正在制作一个新的字典条目,我会d[somelkey] = nextId--;,所以我不必 Min() 字典值 -
谢谢@david,辛苦了。 lidqy TypeConverter 示例覆盖了 ConvertFromString / ConvertToString,我看不出这有什么帮助。 stuart / caius 我在列中只有几个文本项,它们实际上并不包含数字,而是巧妙的解决方案。谢谢大家