fellanmorgh Ответов: 1

Запись в список "объект" из CSV-файла C#


Я довольно долго искал достаточный ответ, но безуспешно.

Как следует из названия, я пытаюсь прочитать CSV-данные в список. В основном у меня есть класс под названием Person:

public string Name { get; set; }
public string Surname { get; set; }
public DateTime DateOfBirth { get; set; }


Я пытаюсь прочитать его из CSV в список. Я не знаю, как это сделать с точки зрения строк, чтобы они соответствовали имени, фамилии, dob

CSV - файл выглядит примерно так:

Имя Фамилия Дата Рождения
Анджела Бла 24/01/1990


Короче говоря, я хочу, чтобы детали "Анжелы" были вставлены в список объектов Person.

Что я уже пробовал:

Я действительно попробовал несколько вещей:

Создайте констуктор в классе my Person:

 public Person(string line) 
{ 
        var split = line.Split(',');
        Name = split[0];
        Surname = split[1];
        DateOfBirth = split[2];  
}


А потом захотел использовать его вот так:

var people = File.ReadLines("../people.csv").Select(line => new 
             Person(line)).ToList();


Но, конечно, она пуста, потому что я создаю нового человека. Это самое близкое из того, что я мог бы подумать of...is это правильное направление для ответа или оно совершенно неверно?

1 Ответов

Рейтинг:
12

OriginalGriff

Первое, что следует отметить, - это то, что ваши примеры данных не соответствуют вашему коду: они не содержат запятых, поэтому разделение не будет работать.
Затем вам нужно использовать DateTime.TryParse или DateTime.TryParseExact, чтобы преобразовать строку в DateTime.

Кроме этого и неправильного имени метода (это должен быть файл.ReadAllLines) этот код должен работать - но вы должны проверить результаты операции разделения, чтобы убедиться, что строка действительно содержит по крайней мере три элемента, разделенных запятыми.


Richard Deeming

В этом нет ничего плохого. Файл.ReadLines[^], и это, вероятно, лучший выбор, чем ReadAllLines в этом случае. :)