CSVHelper, как сопоставить строку с объектом

У меня есть строка в переменной, а не в файле.

Могу ли я использовать CSVHelper (https://joshclose.github.io/CsvHelper/) для синтаксического анализа строку и сопоставить ее с моим объектом?

Код для сопоставления файла CSV работает:

TextReader reader = new StreamReader("data.csv");
var csvReader = new CsvReader(reader);
var records = csvReader.GetRecords<CarModel>();

Как я могу изменить это, чтобы сопоставить строку с объектом:

String carmodels "make,model,year\n\rFord,Escort,1998\n\rHonda,Civiv,1994";
TextReader reader = new StreamReader(carmodels);
var csvReader = new CsvReader(reader);
var records = csvReader.GetRecords<CarModel>();

Спасибо за любую помощь,

отметка


person Mark Tait    schedule 22.03.2019    source источник
comment
Возможный дубликат Как в C # создать объект TextReader из строки (без записи на диск)   -  person Matt.G    schedule 22.03.2019


Ответы (2)


Предполагая, что тип CarModel уже правильно отображен, вы можете использовать StringReader вместо StreamReader:

String carmodels "make,model,year\n\rFord,Escort,1998\n\rHonda,Civiv,1994";
using (var reader = new StringReader(carmodels))
using (var csvReader = new CsvReader(reader))
{
    var records = csvReader.GetRecords<CarModel>();
}
person Joel Coehoorn    schedule 22.03.2019
comment
CsvReader(reader, CultureInfo.InvariantCulture) для новой версии. - person Self; 13.04.2021

Вам «нужно» настроить отображение для вашего класса, чтобы он знал, какой столбец соответствует какому свойству. Даже .AutoMap() может работать на вас. https://joshclose.github.io/CsvHelper/examples/configuration/class-maps/auto-mapping/

person Stejin    schedule 22.03.2019