Преобразование string в DateTime (List)

729
09 декабря 2016, 08:50

Здравствуйте! Возникла проблема при изменении формата переменной. У меня есть класс:

public class Parsing
{
    public string FIO { get; set; }
    public DateTime Date { get; set; }
}

И сам код:

string line;
StreamReader file = new StreamReader(@"Путь");
List<Parsing> csv = new List<Parsing>();
while ((line = file.ReadLine()) != null)
{
    var csvRow = line.Split(';').Skip(1).ToList();
    var objList = new Parsing
    {
        FIO = (csvRow[0]),
        Date = DateTime.Parse(csvRow[1]),
    };
    csv.Add(objList);
}

Когда я пытаюсь, изменить поле "Date" на формат даты, то мне выдает ошибку: "Данная строка не распознана как действительное значение DateTime. Обнаружено неизвестное слово, начинающееся с индекса 0." Я понимаю, что это связанно с тем, что у меня заголовок имеет тип string, а уже поля имеют формат Datetime, но как мне это обойти, я думал, что .Skip(1) мне поможет?

Вот пример CSV-файла:
Дата рождения
12.12.1912
01.01.1901
Answer 1

В приведенном коде Skip вызывается на результате разделения строки.

То есть, в данном случае пропускается один столбец. а не строка с заголовком.

Чтобы пропустить строку заголовка, нужно либо считать эту строку один раз в холостую, не обрабатывая ее.

Либо воспользоваться методом File.ReadLines, который возвращает IEnumerable<string> и применить к нему Skip.

Например так:

List<Parsing> csv = (from line in File.ReadLines(@"Путь").Skip(1)
                     let csvRow = line.Split(';').Skip(1).ToList()
                     select new Parsing
                     {
                         FIO = (csvRow[0]),
                         Date = DateTime.Parse(csvRow[1]),
                     }).ToList();
READ ALSO
Извлечь несколько значений из Combobox

Извлечь несколько значений из Combobox

Есть коллекция, в которой каждому элементe соответствует 4 значения(один из них, это имя, которое отображается свойством DisplayMember в комбобоксе...

292
Хорошая архитектура ASP.NET

Хорошая архитектура ASP.NET

ЗдравствуйтеЯ пытаюсь разобраться в том, как правильнее составлять архитектуру ASP

326
Как заполнить ComboBox из массива?

Как заполнить ComboBox из массива?

У меня есть большой стринговый массив и нужно по нему заполнить ComboBox в ListBox можно сделать так listBoxItems

321
Подсчитать количество нулей и единиц в массиве

Подсчитать количество нулей и единиц в массиве

Прошу помочь найти ошибкуСчитает все элементы

291