有没有办法映射名称和位置不固定的列

时间:2019-05-08 05:08:08

标签: c# csvhelper

例如,我使用的是CsvHelper,现在无法解决具有标题名称和列数的CSV格式的问题

A列,B列,C列,您的姓名,您的姓名

也可以是格式

A列,B列,C列,option1,option2,name_Will,name_John

A列,B列,C列,选项1,name_Anna,name_Peter

option1,option2,option3,...是可选的。 有时,csv有更多选项4,5,6 ...

我正在读取带有类映射和索引的标头,但无法解决此问题。

由于name_Your_name列的名称不是固定的,所以我将Index = 4分配给我,但是如果之前出现option1,option2,...,则索引将不正确。

我想找到name_Your_name,name_His_name(name_Will,name_John,name_Anna ...)列的索引,对此有什么解决方案吗?

谢谢

Map(m => m.option1).Name("option1").Optional();
Map(m => m.option2).Name("option2").Optional();
Map(m => m.name_1).Index(4).Optional();
Map(m => m.name_2).Index(5).Optional();

When csv file does not have cols option1, option2 then the Index is 4
When csv file have cols option1, option2 then the Index is 6

1 个答案:

答案 0 :(得分:0)

我更改为使用动态对象而不是ClassMap的另一种方法,我看到模式列具有前缀name_,所以我获得所有列name_并使用

type Foo = (() => string) | () => () => string;