我正在使用CsvHelper中的C#库读取这样的CSV文件:

var dataCsvFileReader = File.OpenText(inputFile);
var dataCsvReader = new CsvReader(dataCsvFileReader);
var dataRecords = dataCsvReader.GetRecords<dynamic>();

foreach(dynamic record in dataRecords){
    for(int i = 0; i < ???; i++){ //How many columns are there in the record???
        Console.WriteLine($"Record {i} value is: {record[i]}");
    }
}


从代码中可以看到,我的问题是我不知道记录中有多少列。由于在解析数据之前我不知道数据的结构(我输入的CSV文件始终是不同的),我如何找出有多少列?我尝试查询dataCsvReader.Context.ColumnCount,但始终返回0

最佳答案

您可以将每个记录转换为List

using (TextReader dataCsvFileReader = File.OpenText(inputFile))
{
    using (CsvReader dataCsvReader = new CsvReader(dataCsvFileReader))
    {
        while (dataCsvReader.Read())
        {
            var dataRecord = Enumerable.ToList(dataCsvReader.GetRecord<dynamic>());
        }
    }
}

09-26 23:58