CsvHelper获取仅包含标题行的内容

19
我想要读取上传的CSV文件,在处理数据之前,需要检查第一个表头名称是否正确。我一直在努力寻找方法来做到这一点,但是读取器却跳过了第一行。有没有直接选择一个表头并检查它的值的方法?

这回答解决了你的问题吗?[使用CsvHelper获取列名列表的最佳方法是什么?] (https://dev59.com/eVYM5IYBdhLWcg3w1Czx) - JumpingJezza
2个回答

22
您可以使用CsvReader,按照这个答案中所述的方式获取标题行字符串:
using (var csv = new CsvReader(reader))
{
    csv.Read();
    csv.ReadHeader();
    string[] headerRow = csv.Context.HeaderRecord;
}

1
关于这个方法的重要注意事项是,如果您读取HeaderRecord,似乎会将光标向下推一行,这将导致稍后调用GetRecords()时少1行。为了解决这个问题,我必须先调用GetRecords().ToList(),然后再读取csv.HeaderRecord。如果您按照这样做,一切都很好。此外,如果您不调用ToList(),问题将继续存在。 - Don Rolling

9

如果您只想检查第一行,可以直接使用解析器。

var parser = new CsvParser( textReader );
var row = parser.Read();
if( row[0] == "MyColumn" ) { /* do something */ }

如果您正在使用 Stream,如果您要再次使用它,您需要将其重置到开头。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接