Предполагая, что ваш файл имеет одно значение на строку:
List<StudentDetails> studentList = new List<StudentDetails>();
using (StreamReader sr = new StreamReader(@"filename"))
{
while (!sr.EndOfStream)
{
StudentDetails student;
student.unitCode = sr.ReadLine();
student.unitNumber = sr.ReadLine();
student.firstName = sr.ReadLine();
student.lastName = sr.ReadLine();
student.studentMark = Convert.ToInt32(sr.ReadLine());
studentList.Add(student);
}
StudentDetail[] studentArray = studentList.ToArray();
}
Обратите внимание, что это не очень надежно - если не будет 5 строк для каждого студента, у вас возникнут проблемы, или если последнийу ученика менее 5 строк.
РЕДАКТИРОВАТЬ
Извлечение уроков, извлеченных из предыдущего вопроса Массив структур в C # относительно необходимости переопределенияToString()
в вашем struct
, следующее может помочь решить вашу проблему с печатью значений:
В структуре StudentDetails (взято из ответа Ника Брэдли):
public override string ToString()
{
return string.Format("{0}, {1}, {2}, {3}, {4}", unitCode,
unitNumber, firstName, lastName, studentMark);
}
Тогда выможет просто перебрать массив:
for (int i = 0; i < studentArray.Length; i++)
{
Console.WriteLine("Student #{0}:", i);
Console.WriteLine(studentArray[i]);
Console.WriteLine();
}