У меня есть файл CSV со строкой количества записей в конце
id|key|limit
123|1|591
456|2|921
record_count|2
Когда я запускаю это с 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; }
}
Я просто отлаживал неудачный тест, связанный с этой проблемой, когда пришел ваш ответ. Откуда ты знаешь? Это решение работает отлично!