Одна из идей - написать метод, который получает имя и фамилию из ввода консоли и возвращает новый объект Person
. Ниже я добавил его как метод static
в класс Person
.
Я также добавил метод экземпляра под названием AsCsvItem
, который возвращает человека в формате CSV ("FirstName, LastName"
), который будет пригодится позже.
И, наконец, я добавил метод static
SaveToFile
, который сохранит список людей по указанному пути к файлу в формате CSV.
Обратите внимание, что эти новые методы могут существовать где-то еще, я просто поместил их в класс Person
для удобства:
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public static Person FromConsoleInput()
{
var person = new Person();
Console.Write("Enter first name: ");
person.FirstName = Console.ReadLine();
Console.Write("Enter last name: ");
person.LastName = Console.ReadLine();
return person;
}
public string AsCsvItem()
{
return $"{FirstName} , {LastName}";
}
public static void SaveToFile(List<Person> people, string path)
{
// Create a list with the column headers
List<string> content = new List<string> {"FirstName , LastName"};
// Add a line for each person
content.AddRange(people.Select(person => person.AsCsvItem()));
// Save it to the file path
File.WriteAllLines(path, content);
}
}
Затем вы можете просто вызвать метод FromConsoleInput
в al oop, чтобы заполнить список людей, и метод SaveToFile
, чтобы сохранить их в файл csv. Ниже я использую numPeople
, чтобы определить, сколько людей мы должны добавить:
var numPeople = 2;
var people = new List<Person>();
for (var i = 0; i < numPeople; i++)
{
Console.WriteLine($"Enter person #{i + 1} info:");
people.Add(Person.FromConsoleInput());
}
Person.SaveToFile(people, @"c:\temp\people.csv");