В основном то, что я пытаюсь сделать, - это прочитать файл CSV с помощью CSVHelper. Хитрость в том, что существует более одного файла (каждый раз, когда пользователь выбирает другой), и каждый из них имеет разную структуру.
Единственное, что они разделяют, - это сначала столбец с именем «Id», затем каждый из них имеет разное количество столбцов (от 2 дополнительных до 5) с разными типами данных.
Я пробовал сделать вот так:
public class Country
{
public int Id { get; set; }
public IList<string> Attributes { get; set; }
}
public sealed class CountryMap : CsvClassMap<Country>
{
private List<string> attributeColumns =
new List<string> { "Attribute1", "Attribute2", "Attribute3", "Attribute4", "Attribute5" };
public override void CreateMap()
{
Map(m => m.Id).Name("Id").Index(0);
Map(m => m.Attributes).ConvertUsing(row =>
attributeColumns
.Select(column => row.GetField<string>(column))
.Where(value => String.IsNullOrWhiteSpace(value) == false)
);
}
}
А затем с помощью:
using (var reader = new CsvReader(new StreamReader(FilePath,encoding.UTF8)))
{
reader.Configuration.RegisterClassMap<CountryMap>();
while (reader.Read())
{
var card = reader.GetRecord<Country>();
}
}
Но я получаю только car = null.
Буду очень благодарен за любые советы и ответы.