【问题标题】:CsvHelper getting just the headers rowCsvHelper 仅获取标题行
【发布时间】:2014-09-16 13:40:29
【问题描述】:

我正在尝试读取上传的 CSV 文件,在对数据进行任何操作之前,我需要检查第一个标题名称以确保它是正确的文件。我一直在尝试找到一种方法来做到这一点,但读者却跳到了第二行。是否有直接的方法来选择其中一个标题并检查其值?

【问题讨论】:

标签: csvhelper


【解决方案1】:

您可以使用 CsvReader 获取标题行字符串,如 this answer 中所述:

using (var csv = new CsvReader(reader))
{
    csv.Read();
    csv.ReadHeader();
    string[] headerRow = csv.Context.HeaderRecord;
}

【讨论】:

  • 关于此方法的重要说明是,如果您阅读 HeaderRecord,它似乎会将光标向下推一行,这将导致稍后对 GetRecords() 的调用减少 1 行。为了解决这个问题,我必须 GetRecords().ToList(),然后阅读 csv.HeaderRecord。如果你这样做,一切都很好。此外,如果您不调用 ToList(),问题仍然存在。
【解决方案2】:

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

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

如果您使用的是Stream,如果您要再次使用它,则需要将其重置为开头。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多