Проблема CSVHelper при чтении CSV в настраиваемый объект

Я пытаюсь прочитать CSV-файл в своих пользовательских объектах, но каждый раз получаю сообщение об ошибке, что таких полей не существует. Однако они действительно существуют.

Вот мой код:

public class Order
{
    public string isin { get; set; }
    public double price { get; set; }
}

class OrderMap : CsvClassMap<Order>
{
    [System.Obsolete("use CreateMap", true)]
    public override void CreateMap()
    {
        Map(m => m.isin).Index(0);
        Map(m => m.price).Index(1);
    }
}

static void Main(string[] args)
{
    StreamReader file = new StreamReader(@"data\1\my_file.csv");
    var csv = new CsvReader(file);
    csv.Configuration.RegisterClassMap<OrderMap>();
    var orderFlow = csv.GetRecords<Order>().ToList();

Когда я пытаюсь получить доступ к определенному полю через getField<string>(Index), я получаю ту же ошибку для всех индексов выше 0. getField<string>(0) возвращает всю строку, разделенную ;. Что случилось?


person Vasiliy    schedule 18.03.2016    source источник
comment
было бы полезно, если бы вы включили образец своего .csv   -  person James Tobin    schedule 18.03.2016
comment
Вот пример файла my_file. Любая помощь приветствуется.   -  person Vasiliy    schedule 18.03.2016


Ответы (1)


Проблема в том, что вы не указали свой разделитель как ;. Разделитель по умолчанию - ,. Вам необходимо обновить вашу конфигурацию. Дополнительную информацию можно найти на сайте библиотеки.

csv.Configuration.Delimiter = ";";
person drneel    schedule 18.03.2016
comment
В конце концов, это называется CSV, а не SCSV. Шутка, но Дмиэль прав. - person DiscipleMichael; 18.03.2016