如何配置 CsvHelper 以忽略与数据行不同的页脚行?
How can CsvHelper be configured to ignore a footer row that differs from the data rows?
我有一个 CSV 文件,末尾有一个记录计数行
id|key|limit
123|1|591
456|2|921
record_count|2
当我使用 class 映射 运行 this with CsvHelper
时,它在到达 record_count|2
行时抛出异常。我正在通过配置 ReadingExceptionOccurred
处理程序来忽略该行来解决它。
csvConfig.ReadingExceptionOccurred = ex =>
{
if (ex.Exception.Context.Parser.RawRecord.Contains("record_count"))
{
return false;
}
return true;
};
这可行,但是否有更“标准”的方法来处理此页脚记录?
您可以在配置中使用 ShouldSkipRecord
。
void Main()
{
var config = new CsvConfiguration(CultureInfo.InvariantCulture)
{
Delimiter = "|",
ShouldSkipRecord = args => args.Record[0] == "record_count"
};
using (var reader = new StringReader("id|key|limit\n123|1|591\n456|2|921\nrecord_count|2"))
using (var csv = new CsvReader(reader, config))
{
var records = csv.GetRecords<Foo>().Dump();
}
}
public class Foo
{
public int id { get; set; }
public int key { get; set; }
public int limit { get; set; }
}
我有一个 CSV 文件,末尾有一个记录计数行
id|key|limit
123|1|591
456|2|921
record_count|2
当我使用 class 映射 运行 this with CsvHelper
时,它在到达 record_count|2
行时抛出异常。我正在通过配置 ReadingExceptionOccurred
处理程序来忽略该行来解决它。
csvConfig.ReadingExceptionOccurred = ex =>
{
if (ex.Exception.Context.Parser.RawRecord.Contains("record_count"))
{
return false;
}
return true;
};
这可行,但是否有更“标准”的方法来处理此页脚记录?
您可以在配置中使用 ShouldSkipRecord
。
void Main()
{
var config = new CsvConfiguration(CultureInfo.InvariantCulture)
{
Delimiter = "|",
ShouldSkipRecord = args => args.Record[0] == "record_count"
};
using (var reader = new StringReader("id|key|limit\n123|1|591\n456|2|921\nrecord_count|2"))
using (var csv = new CsvReader(reader, config))
{
var records = csv.GetRecords<Foo>().Dump();
}
}
public class Foo
{
public int id { get; set; }
public int key { get; set; }
public int limit { get; set; }
}