CsvHelper定义列的自定义映射

问题描述 投票:0回答:1

我正在尝试使用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解码为名称

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成为get only属性。

c# csvhelper
1个回答
2
投票
输出:
enter image description here
© www.soinside.com 2019 - 2024. All rights reserved.