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

使用CsvHelper将CSV编号列映射到数组时报找不到成员如何解决

问题原因

你遇到的异常确实由数组索引写法导致:CsvHelper的ClassMap映射表达式要求必须指向类的属性/字段成员,Leds[0]属于索引器调用,无法被反射解析为可映射的有效成员,因此会抛出找不到成员的错误。

解决方案

最直接的实现方式是使用Convert(低版本CsvHelper用ConvertUsing)方法一次性读取所有LED列,赋值给数组:

public class EyeExcitation
{
    public int Dt { get; set; }
    public double[] Leds { get; set; } = new double[6];
}

sealed class EyeExcitationMap : ClassMap<EyeExcitation>
{
    public EyeExcitationMap()
    {
        Map(m => m.Dt).Name("Dt");
        // 手动映射所有LED列到数组
        Map(m => m.Leds).Convert(args =>
        {
            return new double[6]
            {
                args.Row.GetField<double>("LED1 R"),
                args.Row.GetField<double>("LED2 R"),
                args.Row.GetField<double>("LED3 R"),
                args.Row.GetField<double>("LED4 R"),
                args.Row.GetField<double>("LED5 R"),
                args.Row.GetField<double>("LED6 R")
            };
        });
    }
}

如果你的CSV中LED列命名逻辑完全统一,也可以通过循环减少重复代码:

public EyeExcitationMap()
{
    Map(m => m.Dt).Name("Dt");
    Map(m => m.Leds).Convert(args =>
    {
        var leds = new double[6];
        for (int i = 0; i < 6; i++)
        {
            leds[i] = args.Row.GetField<double>($"LED{i+1} R");
        }
        return leds;
    });
}

内容的提问来源于stack exchange,提问作者Maxime Charrière

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:09:03