static void Main() { Student[] courseOne = new Student[40]; for (int i = 0; i < courseOne.Length; i++) { courseOne[i] = Student.RandomStudent(); } // all students from group 2 with Linq var groupTwoLinq = from student in courseOne where student.GroupNumber == 2 orderby student.FirstName select student; Console.WriteLine("Group two with LINQ"); foreach (var student in groupTwoLinq) { Console.WriteLine("{0,-10} {1,-10} {2}", student.FirstName, student.LastName, student.GroupNumber); } Console.WriteLine(); // all students from group 2 with lambda var groupTwoLambda = courseOne.Where(x => x.GroupNumber == 2).OrderBy(x => x.FirstName); Console.WriteLine("Group two with lambda"); foreach (var student in groupTwoLambda) { Console.WriteLine("{0,-10} {1,-10} {2}", student.FirstName, student.LastName, student.GroupNumber); } Console.WriteLine(); // all students with mail in abv Console.WriteLine("Students with email in abv.bg"); var studentsInABV = from student in courseOne where student.Email.Contains("@abv.bg") select student; foreach (var student in studentsInABV) { Console.WriteLine("{0,-10} {1,-10} {2}", student.FirstName, student.LastName, student.Email); } Console.WriteLine(); // all students with phones in Sofia Console.WriteLine("Students with phones in Sofia:"); var sofiaGuys = from student in courseOne where student.Tel.StartsWith("02") select student; foreach (var student in sofiaGuys) { Console.WriteLine("{0,-10} {1,-10} {2}", student.FirstName, student.LastName, student.Tel); } Console.WriteLine(); Console.WriteLine("Students with at least one mark Excellent (6)"); var excelentGuys = from students in courseOne where students.Marks.Contains(6) select new { FullName = students.FirstName + " " + students.LastName, Marks = string.Join(" ", students.Marks.ToArray()) }; foreach (var student in excelentGuys) { Console.WriteLine(student); } Console.WriteLine(); Console.WriteLine("Students with exactly two marks \"2\":"); var poorGuys = courseOne.Where(x => x.Marks.Count(y => y == 2) >= 2); foreach (var student in poorGuys) { Console.WriteLine("{0,-10} {1,-10} {2}", student.FirstName, student.LastName, string.Join(" ", student.Marks.ToArray())); } Console.WriteLine(); Console.WriteLine("2006 students marks"); var students2006 = courseOne.Where(x => x.FN % 100 == 6); foreach (var student in students2006) { Console.WriteLine("FN: {3} {0,-10} {1,-10} {2}", student.FirstName, student.LastName, string.Join(" ", student.Marks.ToArray()), student.FN); } Console.WriteLine(); List <Group> departments = new List <Group>() { new Group(0), new Group(1), new Group(2), new Group(3), new Group(4), }; // All students from "Mathematics" department with Join operator. Console.WriteLine("All mathematics are:"); var mathematics = from student in courseOne join grpN in departments on student.GroupNumber equals grpN.GroupNumber where grpN.DepartmentName == "Mathematics" select student; foreach (var student in mathematics) { Console.WriteLine("{0,-10} {1,-10} {2}", student.FirstName, student.LastName, student.Group.DepartmentName); } Console.WriteLine(); // All departments with Join operator. Console.WriteLine("All groups are (LINQ):"); var groups = from student in courseOne join grpN in departments on student.GroupNumber equals grpN.GroupNumber orderby student.GroupNumber select student; foreach (var student in groups) { Console.WriteLine("Group: {2,-12} {0,-10} {1,-10}", student.FirstName, student.LastName, student.Group.DepartmentName); } Console.WriteLine(); // All departments with extensions Console.WriteLine("All groups are (extensions):"); var groupsExtensions = courseOne.OrderBy(x => x.GroupNumber); foreach (var student in groupsExtensions) { Console.WriteLine("Group: {2,-12} {0,-10} {1,-10}", student.FirstName, student.LastName, student.Group.DepartmentName); } }