/// <summary> /// Problem 10. /// Create a List<Student> with sample students. Select only the students that are from group number 2. /// Use LINQ query. Order the students by FirstName. /// Implement the previous using the same query expressed with extension methods. /// </summary> public static List <Student> FindStudentsGroupTwo(this List <Student> input) { return(LinqAndLambdaQueries.FindStudentsGroupTwo(input)); }
/// <summary> /// Problem 18. /// Create a program that extracts all students grouped by GroupName and then prints them to the console. /// Use extension methods. /// </summary> public static List <Student> GroupByGrooupNames(this List <Student> input) { return(LinqAndLambdaQueries.GroupByGroupName(input)); }
static void Main(string[] args) { // test Problem 1. StringBuilder.Substring Console.WriteLine("\nProblem 1. StringBuilder.Substring"); Console.WriteLine("------------------------------------"); StringBuilder str = new StringBuilder(); str.Append("aaaaaaaabbbbbbbbbbbbbccccccccccccc"); Console.WriteLine("Original string is: {0}", str); Console.WriteLine("Substring is: {0}", str.SubString(0, 8)); // test Problem 2. IEnumerable extensions Console.WriteLine("\nProblem 2. IEnumerable extensions"); Console.WriteLine("------------------------------------"); Console.Write("Input values: "); int[] ints = new int[] { 1, 2, 3, 4, 5, 6 }; foreach (var item in ints) { Console.Write(item + " "); } Console.Write("\nSum: " + ints.SumExt <int>()); Console.Write("\nProduct: " + ints.ProductExt <int>()); Console.Write("\nMin: " + ints.MinExt <int>()); Console.Write("\nMax: " + ints.MaxExt <int>()); Console.WriteLine(); Student[] students = new Student[] { new Student { FirstName = "Peter", LastName = "Petrov", Age = 18, Tel = "0888123456", Email = "*****@*****.**", FN = 121205, GroupStudent = new Group(1, "Mathematics"), Marks = new List <double> { 2, 3, 4, 5 } }, new Student { FirstName = "Ivan", LastName = "Ivanov", Age = 15, Tel = "0888123457", Email = "*****@*****.**", FN = 155405, GroupStudent = new Group(1, "Phisycs"), Marks = new List <double> { 6, 6, 6, 6 } }, new Student { FirstName = "Atanas", LastName = "Ivanov", Age = 22, Tel = "0888827364", Email = "*****@*****.**", FN = 432106, GroupStudent = new Group(2, "Mathematics"), Marks = new List <double> { 4, 2, 2, 6 } }, new Student { FirstName = "Peter", LastName = "Ivanov", Age = 44, Tel = "003592123456", Email = "*****@*****.**", FN = 152306, GroupStudent = new Group(2, "Phisycs"), Marks = new List <double> { 2, 2, 2, 2 } } }; // test Problem 3. First before last Console.WriteLine("\nProblem 3. First before last"); Console.WriteLine("------------------------------------"); foreach (var item in LinqAndLambdaQueries.FindFirstBeforeLast(students)) { Console.WriteLine(item); } // test Problem 4. Age range Console.WriteLine("\nProblem 4. Age range"); Console.WriteLine("------------------------------------"); foreach (var item in LinqAndLambdaQueries.AgeRange(students)) { Console.WriteLine(item); } // test Problem 5. Order students Console.WriteLine("\nProblem 5. Order students"); Console.WriteLine("------------------------------------"); Console.WriteLine("\nWith lambda"); foreach (var item in LinqAndLambdaQueries.OrderStudentsLambda(students)) { Console.WriteLine(item); } Console.WriteLine("\nWith LINQ"); foreach (var item in LinqAndLambdaQueries.OrderStudentsLinq(students)) { Console.WriteLine(item); } // test Problem 6. Divisible by 7 and 3 int[] numbers = new int[] { 1, 21, 42, 34, 23, 210 }; Console.WriteLine("\nProblem 6. Divisible by 7 and 3"); Console.WriteLine("------------------------------------"); Console.WriteLine("\nWith lambda"); foreach (var item in LinqAndLambdaQueries.FindDivisibleByThreeAndSevenLambda(numbers)) { Console.Write(item + " "); } Console.WriteLine("\nWith LINQ"); foreach (var item in LinqAndLambdaQueries.FindDivisibleByThreeAndSevenLinq(numbers)) { Console.Write(item + " "); } // test Problem 7. Timer Console.WriteLine(); Console.WriteLine("\nProblem 7. Timer with delegates"); Console.WriteLine("------------------------------------"); Timer timer = new Timer(1); Timer.MyMethodsDelegate d = delegate() { Console.WriteLine("Timer executed with delegates each 1 second"); }; timer.AddDelegate(d); timer.Start(); System.Threading.Thread.Sleep(5000); timer.Stop(); // test Problem 8. Timer with events Console.WriteLine(); Console.WriteLine("\nProblem 8. Timer with events"); Console.WriteLine("------------------------------------"); TimerEvents timerEv = new TimerEvents(1); timerEv.RaiseTimerEvent += (sender, e) => { Console.WriteLine("Timer executed with events each {0} second", e.Interval); }; timerEv.Start(); System.Threading.Thread.Sleep(5000); timerEv.Stop(); List <Student> studentsList = students.ToList <Student>(); // test Problem 9. Students from group number 2 Console.WriteLine("\nProblem 9. Students from group number 2"); Console.WriteLine("------------------------------------"); Console.WriteLine("\nWith LINQ"); foreach (var item in LinqAndLambdaQueries.FindStudentsGroupTwo(studentsList)) { Console.WriteLine(item); } // test Problem 10. Students from group number 2 Console.WriteLine("\nProblem 10. Students from group number 2"); Console.WriteLine("------------------------------------"); Console.WriteLine("\nWith Extension methods"); foreach (var item in studentsList.FindStudentsGroupTwo()) { Console.WriteLine(item); } // test Problem 11. Students with mails in abv.bg Console.WriteLine("\nProblem 11. Students with mails in abv.bg"); Console.WriteLine("------------------------------------"); foreach (var item in LinqAndLambdaQueries.ExtractAllMails(studentsList)) { Console.WriteLine(item); } // test Problem 12. Students with phones in Sofia Console.WriteLine("\nProblem 12. Students with phones in Sofia"); Console.WriteLine("------------------------------------"); foreach (var item in LinqAndLambdaQueries.ExtractAllWithPhonesInSofia(studentsList)) { Console.WriteLine(item); } // test Problem 13. Students with at least one mark 6 Console.WriteLine("\nProblem 13. Students with at least one mark 6"); Console.WriteLine("------------------------------------"); LinqAndLambdaQueries.ExtractStudentsMarks(studentsList); // test Problem 14. Students with exactly two marks 2 Console.WriteLine(); Console.WriteLine("\nProblem 14. Students with exactly two marks 2"); Console.WriteLine("------------------------------------"); foreach (var item in studentsList.ExtractExactlyTwoMarks()) { Console.WriteLine(item); } // test Problem 15. Students that enrolled in 2006 Console.WriteLine(); Console.WriteLine("\nProblem 15. Students that enrolled in 2006"); Console.WriteLine("------------------------------------"); foreach (var item in LinqAndLambdaQueries.ExtractAllWithFNin2006(studentsList)) { Console.WriteLine(item); } // test Problem 16. Students from gorup Mathematics Console.WriteLine(); Console.WriteLine("\nProblem 16. Students from gorup Mathematics"); Console.WriteLine("------------------------------------"); List <Group> grList = new List <Group>(); grList.Add(new Group(1, "Mathematics")); foreach (var item in LinqAndLambdaQueries.ExtractStudentGroups(studentsList, grList)) { Console.WriteLine(item); } // test Problem 17. Longest string Console.WriteLine(); Console.WriteLine("\nProblem 17. Longest string"); Console.WriteLine("------------------------------------"); List <string> strings = new List <string> { "123", "1234", "12345", "1" }; Console.WriteLine("Longest string is: " + LinqAndLambdaQueries.StringWithMaxLen(strings)); // test Problem 18. Group by GroupName - LINQ Console.WriteLine(); Console.WriteLine("\nProblem 18. Group by GroupName - LINQ"); Console.WriteLine("------------------------------------"); foreach (var item in LinqAndLambdaQueries.GroupByGroupName(studentsList)) { Console.WriteLine(item); } // test Problem 19. Group by GroupName - Extension methods Console.WriteLine(); Console.WriteLine("\nProblem 19. Group by GroupName - Extension methods"); Console.WriteLine("------------------------------------"); foreach (var item in studentsList.GroupByGrooupNames()) { Console.WriteLine(item); } // test Problem 20. Convergent series Console.WriteLine(); Console.WriteLine("\nProblem 20. Convergent series"); Console.WriteLine("------------------------------------"); Console.WriteLine("1 + 1/2 + 1/4 + 1/8 + 1/16 + …"); Console.WriteLine(Convergent.ConvergentSum(index => 1 / Math.Pow(2, index - 1), 0.01)); Console.WriteLine("1 + 1/2 - 1/4 + 1/8 - 1/16 + …"); Console.WriteLine(Convergent.ConvergentSum(index => { if ((index % 2) == 0) { return(1 / Math.Pow(2, index - 1)); } else { return((1 / Math.Pow(2, index - 1)) * -1); } }, 0.01)); }