CsvHelper为列定义自定义映射

时间:2020-04-05 02:48:48

标签: c# csvhelper

我正在尝试使用CSVHelper填充CSV文件中未提供的列。 这是我需要导入的CSV的示例

Id
10
123
45
213

我要反序列化的课程是这个课程:

public class Foo {
    public int Id { get; set }
    public string Name { get; set }
}

使用默认配置时,出现此错误:

CsvHelper.HeaderValidationException:找不到名称为“ Name”的标题。

我希望可以定义一个映射器,以便解析器可以填充列Name(例如,通过提供值的字典)。有什么办法吗?

谢谢

----------编辑

只需澄清一下,这个想法就是要有一个类似转换器的东西,它与一个字段相关联,可以用来将ID解码为Name

public class NameConverter
{
    public NameConverter()
    {
        employeesList = new Dictionary<int, string>()
        {
            { 10, "Mary" },
            { 45, "Mike" },
            { 123, "Jack" },
            { 213, "Suzanne" },
        };
    }

    IDictionary<int, string> employeesList;

    public string GetValue(int id) => employeesList[id];
}

我可以想象,替代方法是忽略建议的Name字段,并将NameConverter注入Foo类中,并使Name为仅获取属性。

1 个答案:

答案 0 :(得分:2)

[4,8,12,16,20]

输出:

enter image description here