You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用CsvClassMap将不同列名的CSV映射到目标类属性

带表头CSV到Class1属性的映射实现方案

核心修改点

  • 启用表头识别:将HasHeaderRecord配置设为true,让CsvReader读取CSV的表头行
  • 调整映射规则:把原Class1Map中按索引映射的逻辑,改为按新CSV的列名对应映射

修改后的完整代码

CSV读取主逻辑

sr = new StreamReader(fs);
fs = null;

using (CsvReader csvReader = new CsvReader(sr))
{
    sr = null;

    // 启用表头识别,适配新CSV格式
    csvReader.Configuration.HasHeaderRecord = true;
    csvReader.Configuration.IgnoreBlankLines = false;
    csvReader.Configuration.IgnoreReadingExceptions = true;
    csvReader.Configuration.WillThrowOnMissingField = false;
    csvReader.Configuration.TrimFields = true;

    csvReader.Configuration.RegisterClassMap<Class1Map>();
    FileRecords = csvReader.GetRecords<Class1>().ToList();
}

修改后的Class1Map映射类

public class Class1Map : CsvClassMap<Class1>
{
    public Class1Map()
    {
        // 按新CSV列名映射到Class1对应属性
        Map(m => m.AccountId).Name("AccountRef");
        Map(m => m.MeterId).Name("MeterSerial");
        // 其他属性同理,替换为对应的新列名
        // .......
    }
}

兼容新旧CSV的扩展方案(可选)

如果需要同时支持无表头(旧格式)和有表头(新格式)的CSV,可通过参数判断动态选择映射规则:

新增无表头专用映射类

public class Class1IndexMap : CsvClassMap<Class1>
{
    public Class1IndexMap()
    {
        Map(m => m.AccountId).Index(0);
        Map(m => m.MeterId).Index(1);
        // 其他属性按原索引映射
        // .......
    }
}

动态注册映射类

using (CsvReader csvReader = new CsvReader(sr))
{
    sr = null;

    csvReader.Configuration.HasHeaderRecord = hasHeaderRecord;
    csvReader.Configuration.IgnoreBlankLines = false;
    csvReader.Configuration.IgnoreReadingExceptions = true;
    csvReader.Configuration.WillThrowOnMissingField = false;
    csvReader.Configuration.TrimFields = true;

    // 根据是否有表头选择对应映射规则
    if (hasHeaderRecord)
    {
        csvReader.Configuration.RegisterClassMap<Class1Map>();
    }
    else
    {
        csvReader.Configuration.RegisterClassMap<Class1IndexMap>();
    }
    FileRecords = csvReader.GetRecords<Class1>().ToList();
}

内容的提问来源于stack exchange,提问作者user768853

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 01:05:53