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

CsvHelper读取CSV无需映射特定类型按行列索引取值方案

CsvHelper 无自定义映射按索引读取CSV方法

不需要手动编写列对应的映射类,直接用CsvHelper的底层Parser按索引逐字段取值,存成嵌套列表结构就能实现row[x][y]="markup"]的索引访问,全程不需要提前定义任何强类型。

  • 核心思路:放弃CsvHelper默认的强类型绑定功能,直接调用Parser按列索引读取每个单元格的值,按「行列表嵌套列列表」的结构存储所有数据
  • 实现代码:
using CsvHelper;
using System.Globalization;
using System.Collections.Generic;

// 替换为你的CSV文件实际路径,配置项可根据文件实际分隔符、编码调整
using var streamReader = new StreamReader("target.csv");
using var csvReader = new CsvReader(streamReader, CultureInfo.InvariantCulture);

// 外层集合对应所有行,内层集合对应单行的所有列,直接支持双索引访问
List<List<string>> result = new List<List<string>>();

// 如果你的CSV文件没有表头行,删除下面两行读取表头的代码即可
csvReader.Read();
csvReader.ReadHeader();

// 逐行遍历内容
while (csvReader.Read())
{
    var row = new List<string>();
    // 遍历当前行所有列,按索引依次取值存入当前行集合
    for (int col = 0; col < csvReader.Parser.Count; col++)
    {
        row.Add(csvReader.GetField(col));
    }
    result.Add(row);
}
  • 访问方式:读取完成后直接通过索引取值即可,比如要访问第2行第3列(索引默认从0开始计数),直接调用result[1][2]就能拿到对应单元格的字符串值,有类型转换需求的话可以在GetField时传入对应泛型参数,比如csvReader.GetField<int>(col)直接读取整型值。

注意:如果你的CSV文件存在空行、特殊转义字符,提前在CsvReader的配置项里开启对应的处理规则即可,整体存储和访问逻辑不需要改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:09:18