c# - 如何使用 CsvHelper 跳过 csv 文件末尾的脚注

标签 c# csvhelper

我正在尝试读取以下格式的 CSV 文件:

<表类=“s-表”> <标题> 日期 值 <正文> 2020年12月1日 1 2020年12月2日 2

文件末尾有一个脚注,全部是文本。

如果我使用:

void Main()
{
    using (var reader = new StreamReader("path\\to\\file.csv"))
    using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
    {
        var records = csv.GetRecords<Foo>();
    }
}

public class Foo
{
    public DateTime Date { get; set; }
    public double Value { get; set; }
}

CsvHelper 抛出“FormatException:该字符串未被识别为有效的日期时间。从索引 0 开始有一个未知单词。”

如果我使用它就会起作用:

while (csv.Read()) {
   try {
        records.Add(csv.GetRecord<Foo>());
    }
    catch (Exception e) {}
}

但这确实很慢。

我希望添加:

csv.Configuration.ShouldSkipRecord = record => record.Contains("The");

可以解决问题,但我遇到了同样的错误。

如有任何建议,我们将不胜感激。 (很抱歉无法正确设置表格格式。)

最佳答案

如果脚注只是文本The,那么您所拥有的就可以了。要完成您想要做的事情,您需要执行以下操作:

csv.Configuration.ShouldSkipRecord = record => record.FirstOrDefault()?.StartsWith("The") ?? false;

您也可以测试是否只有 1 个(或更少)字段。

csv.Configuration.ShouldSkipRecord = record => record.Count() <= 1;

关于c# - 如何使用 CsvHelper 跳过 csv 文件末尾的脚注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65283832/

相关文章:

c# - 消息框的大小

c# - 如何使用 CSV Helper 在 C# 中逐行读取?

c# - CSV 文件中不存在字段 'workOrder'

C# List<object>.RemoveAll() - 如何删除列表的一个子集?

c# - 自定义分隔符在 CsvHelper 中不起作用

c# - 阅读时如何忽略CSV中的空行

c# - 将 CsvHelper 自定义转换器应用到特定类映射字段

c# - Group by 会生成巨大的查询

c# - 更新 ASP.NET C# 项目中的修改代码

c# - 我的 Nullable DateTime View 因 Null 而失败