using System.Collections.Generic;
public class StudentsExtraction
public Student(string fistName, string lastName)
this.fistName = fistName;
this.lastName = lastName;
public static void Main(string[] args)
StreamReader reader = new StreamReader(@"C:\Users\ntb\Desktop\test.txt");
SortedDictionary<string, List<Student>> students = new SortedDictionary<string, List<Student>>();
string line = reader.ReadLine();
string[] studentInfo = line.Split(new char[]{'|', ' '}, StringSplitOptions.RemoveEmptyEntries);
Student newStudent = new Student(studentInfo[0], studentInfo[1]);
if (!students.ContainsKey(studentInfo[2]))
students.Add(studentInfo[2], new List<Student>()
line = reader.ReadLine();
students[studentInfo[2]].Add(newStudent);
line = reader.ReadLine();
var subjects = students.Keys;
StringBuilder rezult = new StringBuilder();
foreach (var studentsInSubject in subjects)
List<Student> listOfStudents = students[studentsInSubject];
var sortedStudets = listOfStudents.OrderBy(x => x.LastName);
rezult.Append(studentsInSubject + ":");
foreach (var student in sortedStudets)
rezult.Append(" " + student.FistName + " " + student.LastName + ",");
rezult.Remove(rezult.Length - 1, 1);
rezult.Remove(rezult.Length - 1, 1);
Console.WriteLine(rezult);