Чтение CSV с дополнительным столбцом с помощью CSVHelper

#c# #csvhelper

#c# #csvhelper

Вопрос:

Я хочу прочитать файл CSV, в котором есть несколько необязательных столбцов, для этого я определил класс с необязательным свойством, используя «?», но не могу заставить его работать.

 public class MyItem
{
    public int Id { get; set; }
    public int? MyValue { get; set; }
}
  

Класс сопоставления:

 public sealed class MyItemMap : ClassMap<MyItem>
{
    public MyItemMap()
    {
        Map(m => m.Id);
        Map(m => m.MyValue);
    }
}
  

А затем консольное приложение:

 static void Main(string[] args)
{
    using (var reader = new StreamReader(@"C:Test2DeleteConsoleAppCSVMyItem.csv"))
    using (var csv = new CsvReader(reader))
    {
        csv.Configuration.RegisterClassMap(new MyItemMap());
        csv.Configuration.HeaderValidated = null;
        try
        {
            var records = csv.GetRecords<MyItem>();
            foreach (var r in records)
            {
                Console.WriteLine(r.Id   " "   r.MyValue);
            }

            Console.ReadLine();
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
            Console.ReadLine();
        }
    }
}
}
  

Поэтому я хочу иметь возможность читать файлы, содержащие столбцы «Id», «myValue», а также файлы только со столбцом «Id». Как я могу этого добиться?

Комментарии:

1. Пожалуйста, добавьте языковой тег, чтобы указать не только библиотеку, которую вы используете, но и используемый язык.

Ответ №1:

Устанавливается MyValue как необязательный.

 public sealed class MyItemMap : ClassMap<MyItem>
{
    public MyItemMap()
    {
        Map(m => m.Id);
        Map(m => m.MyValue).Optional();
    }
}