public Student(string firstName, string lastName, string fn, string tel, string email, List<double> marks, Group groupN) { this.FirstName = firstName; this.LastName = lastName; this.FN = fn; this.Tel = tel; this.Email = email; this.Marks = marks; this.GroupN = groupN; }
static void Main(string[] args) { List<Student> students = new List<Student>() { new Student("Pesho", "Peshov", "123406", "0854373434", "*****@*****.**", new List<double> {4, 5, 4.50}, new Group(2, "Mathematics")), new Student("Georgi", "Ivanov", "123409", "02543533", "*****@*****.**", new List<double> {6, 5.50, 4.50}, new Group(3, "Physics")), new Student("Nikola", "Dimitrov", "123411", "0894532313", "*****@*****.**", new List<double> {3.50, 4, 2, 2}, new Group(2, "Informatics")), new Student("Kiril", "Petrov", "123406", "0854343212", "*****@*****.**", new List<double> {5, 6, 5.50}, new Group(2, "Mathematics")), new Student("Maria", "Hristova", "123406", "02865782", "*****@*****.**", new List<double> {4.50, 5.25, 5}, new Group(1, "Mathematics")), }; // only the students that are from group number 2, order the students by first name, with linq Console.WriteLine("Only the students that are from group number 2 with linq"); var studentsFromGroupTwoWithLinq = from student in students where student.GroupN.GroupNumber == 2 orderby student.FirstName select student; foreach (Student student in studentsFromGroupTwoWithLinq) { Console.WriteLine(student); } Console.WriteLine(); // only the students that are from group number 2, order the students by first name, with lambda Console.WriteLine("Only the students that are from group number 2 with lambda"); var studentsFromGroupTwoWithLambda = students.Where(student => student.GroupN.GroupNumber == 2) .OrderBy(student => student.FirstName); foreach (Student student in studentsFromGroupTwoWithLambda) { Console.WriteLine(student); } Console.WriteLine(); // all students that have email in abv.bg with linq Console.WriteLine("All students that have email in abv.bg"); var extractStudentsByEmail = from student in students where student.Email.Contains("@abv.bg") select student; foreach (Student student in extractStudentsByEmail) { Console.WriteLine(student); } Console.WriteLine(); //all students with phones in Sofia with linq Console.WriteLine("All students with phones in Sofia"); var extractStudentsByPhone = from student in students where student.Tel.StartsWith("02") select student; foreach (Student student in extractStudentsByPhone) { Console.WriteLine(student); } Console.WriteLine(); // all students that have at least one mark Excellent (6) into a new anonymous class that has properties – FullName and Marks, with linq Console.WriteLine("All students that have at least one mark Excellent (6)"); var extractStudentsByMark = from student in students where student.Marks.Contains(6) select new { FullName = student.FirstName + " " + student.LastName, Marks = student.Marks}; foreach (var student in extractStudentsByMark) { Console.WriteLine("Full name: {0} \nMarks: {1}\n", student.FullName, string.Join(", ", student.Marks)); } Console.WriteLine(); //the students with exactly two marks "2" with lambda Console.WriteLine("The students with exactly two marks 2"); var extractStudentsWithTwoMarks = students.Where(student => student.Marks.FindAll(mark => mark == 2).Count == 2) .Select(student => new { FullName = student.FirstName + " " + student.LastName, Marks = student.Marks }); foreach (var student in extractStudentsWithTwoMarks) { Console.WriteLine("Full name: {0} \nMarks: {1}\n", student.FullName, string.Join(", ", student.Marks)); } Console.WriteLine(); //all Marks of the students that enrolled in 2006 Console.WriteLine("All Marks of the students that enrolled in 2006"); var extractMarks = students.Where(student => student.FN.Substring(4, 2) == "06") .Select(student => student.Marks); foreach (var mark in extractMarks) { Console.WriteLine("{0}", string.Join(", ", mark)); } Console.WriteLine(); //All students from "Mathematics" department Group group1 = new Group(1, "Informatics"); Group group2 = new Group(2, "Mathematics"); Group group3 = new Group(3, "Physics"); List<Group> listOfGroups = new List<Group> {group1, group2, group3}; Console.WriteLine("All students from Mathematics department"); var extractStudentsByDepartment = from someGroup in listOfGroups where someGroup.DepartmentNumber == "Mathematics" join student in students on someGroup.DepartmentNumber equals student.GroupN.DepartmentNumber select student; foreach (Student student in extractStudentsByDepartment) { Console.WriteLine(student); } Console.WriteLine(); //students grouped by GroupNumber with linq Console.WriteLine("Students grouped by GroupNumber with linq"); var groupsWithLinq = from student in students group student by student.GroupN.GroupNumber; List<string> resultWithLinq = new List<string>(); foreach (var someGroup in groupsWithLinq) { resultWithLinq.Add(string.Format("group {0}", someGroup.ElementAt(0).GroupN.GroupNumber)); } foreach (var element in resultWithLinq) { Console.WriteLine(element); } Console.WriteLine(); //students grouped by GroupNumber with lambda Console.WriteLine("Students grouped by GroupNumber with lambda"); var groupsWithLambda = students.GroupBy(student => student.GroupN.GroupNumber); List<string> resultWithLambda = new List<string>(); foreach (var someGroup in groupsWithLambda) { resultWithLambda.Add(string.Format("group {0}", someGroup.ElementAt(0).GroupN.GroupNumber)); } foreach (var element in resultWithLambda) { Console.WriteLine(element); } Console.WriteLine(); }