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

CsvHelper类型转换:将含字符串与数值的Id列映射为int类型

实现方案

方案说明

CsvHelper支持通过Convert/ConvertUsing方法自定义字段映射转换逻辑,你可以直接在MyClassMap的Id字段映射规则里加入自定义转换逻辑即可。

完整代码实现

映射类实现(适配CsvHelper v27+ 新版本)

public class MyClassMap : CsvHelper.Configuration.ClassMap<MyClass>
{
    public MyClassMap()
    {
        Map(m => m.Id).Name("Id").Convert(args =>
        {
            // 读取Id列原始字符串值
            string rawId = args.Row.GetField<string>("Id");
            // 按自定义规则转换
            return rawId switch
            {
                "Team1Id" => -1,
                "Team2Id" => -2,
                // 其他值尝试转为int,转换失败可根据需求调整异常处理逻辑
                _ => int.TryParse(rawId, out int numId) ? numId : throw new NotSupportedException($"未适配的Id值:{rawId}")
            };
        });
        Map(m => m.Name).Name("Name");
    }
}

旧版本CsvHelper(v20及以下)适配写法

如果你的项目用的是低版本CsvHelper,替换为ConvertUsing方法即可:

public class MyClassMap : CsvHelper.Configuration.ClassMap<MyClass>
{
    public MyClassMap()
    {
        Map(m => m.Id).Name("Id").ConvertUsing(row =>
        {
            string rawId = row.GetField<string>("Id");
            return rawId switch
            {
                "Team1Id" => -1,
                "Team2Id" => -2,
                _ => int.Parse(rawId)
            };
        });
        Map(m => m.Name).Name("Name");
    }
}

CSV读取示例

读取CSV时需要注册你写的映射类:

// 引入命名空间
using CsvHelper;
using System.Globalization;
using System.IO;

// 读取逻辑
var csvConfig = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    HasHeaderRecord = true,
    TrimEntries = true // 自动去掉字段前后的空格
};
using var streamReader = new StreamReader("你的测试文件路径.csv");
using var csvReader = new CsvReader(streamReader, csvConfig);
// 注册自定义映射
csvReader.Context.RegisterClassMap<MyClassMap>();
// 读取所有记录
var result = csvReader.GetRecords<MyClass>().ToList();

效果验证

你提供的测试CSV读取后的结果如下:

  • 第一条:Id=10,Name=Foo
  • 第二条:Id=-1,Name=Joe
  • 第三条:Id=-1,Name=Blogs
  • 第四条:Id=-2,Name=Foo Bar

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:27:04