我正在尝试读取以下格式的 CSV 文件:
文件末尾有一个脚注,全部是文本。
如果我使用:
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/