Example #1
0
        public static void Run()
        {
            const string student_names_file = "Names.txt";

            var file_with_names = new FileInfo(student_names_file);

            var rnd     = new Random();
            var dekanat = new Dekanat();

            for (var i = 0; i < 10; i++)
            {
                dekanat.Add(new StudentsGroup {
                    Name = $"Группа {i + 1}"
                });
            }

            foreach (var line in file_with_names.GetLines())
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    continue;
                }

                var components = line.Split(' ');
                if (components.Length < 3)
                {
                    continue;
                }

                var student = new Student
                {
                    LastName   = components[0],
                    FirstName  = components[1],
                    Patronimyc = components[2],
                    Ratings    = rnd.GetRandomIntValues(20, 3, 6).ToList()
                };

                dekanat.Add(student);
            }


            //IEnumerable<Student> students_enum = dekanat;
            //IQueryable<Student> student_query = students_enum.AsQueryable();

            //foreach (var i in Enumerable.Range(0, 100))
            //{

            //}

            //for (var i = 0; i < 100; i++)
            //{

            //}

            //var simple_studetns = Enumerable.Range(1, 100)
            //   .Select(i => new Student { FirstName = $"Student {i}" })
            //   //.ToArray()
            //    ;
            //foreach (var student in simple_studetns)
            //    Console.WriteLine(student);

            var best_students = dekanat.Where(student => student.AverageRating >= 4);
            var last_students = dekanat.Where(student => student.AverageRating < 4);

            foreach (var best_student in best_students)
            {
                Console.WriteLine(best_student);
            }

            //Console.ReadLine();

            foreach (var last_student in last_students)
            {
                Console.WriteLine(last_student);
            }

            var best_count = best_students.Count();
            var last_count = last_students.Count();

            //var names_lengths = file_with_names.GetLines()
            //   .Select(str => str.Split(' '))
            //   .Select(strs => new KeyValuePair<string, int>(strs[1], strs[1].Length))
            //   .Where(v => v.Value > 4)
            //   .OrderBy(v => v.Value)
            //   .Sum(v => v.Key.Length);

            IEnumerable <Student>       students = dekanat;
            IEnumerable <StudentsGroup> groups   = dekanat.Groups;

            var students_groups = students.Join(
                groups,
                stud => stud.GroupId,
                group => group.Id,
                (stud, group) => new { Student = stud, Group = group })
                                  .Where(s => s.Student.AverageRating > 4);

            foreach (var students_group in students_groups)
            {
                Console.WriteLine("{0} == {1}", students_group.Student, students_group.Group);
            }

            var students_groups_dict = students_groups.GroupBy(g => g.Group.Name)
                                       .ToDictionary(g => g.Key, g => g.Select(v => v.Student.LastName).ToArray());
        }
Example #2
0
        public static void Run()
        {
            const string student_names_file = "names.txt";

            var file_with_names = new FileInfo(student_names_file);

            var rnd     = new Random();
            var dekanat = new Dekanat();

            for (int i = 0; i < 10; i++)
            {
                dekanat.Add(new StudentsGroup {
                    Name = $"Группа {i + 1}"
                });
            }
            foreach (var line in file_with_names.GetLines())
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    continue;
                }
                var components = line.Split(' ');
                if (components.Length < 3)
                {
                    continue;
                }
                var student = new Student
                {
                    LastName   = components[0],
                    FirstName  = components[1],
                    Patronimyc = components[2],
                    Rating     = rnd.GetRandomIntValues(10, 3, 6).ToList()
                };

                dekanat.Add(student);
            }

            #region Enumerable.Range(1, 100)

            /*
             * //  перечисления студентов. можно работать с перечислениями.
             * IEnumerable<Student> students_enum = dekanat;
             * //   поддерживает запросы к себе. Оба интерфейсы.
             * IQueryable<Student> students_query = students_enum.AsQueryable();
             *
             * //  равносильные записи. Но основное предназначение Enumerable.Range() другое
             * foreach (var i in Enumerable.Range(0, 100))
             * {
             * }
             * for (int i = 0; i < 100; i++)
             * {
             * }
             *
             * var simple_students = Enumerable.Range(1, 100)
             *  .Select(i => new Student { FirstName = $"Student {i}" })
             *  .ToArray() ;   //  получили объект перечисления студентов
             *
             * foreach (var students in simple_students)
             * {
             *  Console.WriteLine(students);
             * }
             */
            #endregion

            var best_students  = dekanat.Where(student => student.AverageRating > 4);
            var loser_students = dekanat.Where(student => student.AverageRating < 4);
            foreach (var best_student in best_students)
            {
                Console.WriteLine(best_student);
            }
            foreach (var losers in loser_students)
            {
                Console.WriteLine(losers);
            }

            //  подсчет хорошистов и лузеров
            var best_count  = best_students.Count();
            var loser_count = loser_students.Count();

            #region .Select Where OrderBy Sum

            /*
             * //  var автоматическая типизация
             * var names_length = file_with_names.GetLines()
             *  .Select(str => str.Split(' '))  //  разделили по пробелу
             *  .Select(strs => new KeyValuePair<string, int>(strs[1], strs[1].Length)) //  выбрали второй элемент (имя)
             *  .Where(v => v.Value > 4)    //  выбрали те что больше 4 фильтрация
             *  .OrderBy(v => v.Value)  //  отсортировали
             *  .Sum(v => v.Key.Length);
             */
            #endregion

            IEnumerable <Student>       students = dekanat;
            IEnumerable <StudentsGroup> groups   = dekanat.Groups;

            var students_groups = dekanat.Join(
                groups,
                stud => stud.GroupId,
                group => group.Id,
                (stud, group) => new { Student = stud, Group = group })
                                  .Where(s => s.Student.AverageRating > 4);

            foreach (var students_group in students_groups)
            {
                Console.WriteLine($"{students_group.Student} == {students_group.Group}");
            }

            var students_group_dict = students_groups.GroupBy(g => g.Group.Name)
                                      .ToDictionary(g => g.Key, g => g.Select(v => v.Student.LastName).ToArray());
        }
Example #3
0
        static void Main(string[] args)
        {
            var dekanat = new Dekanat();

            //dekanat.SubscribeToAdd(OnStudentAdd);
            dekanat.SubscribeToRemove(OnStudentRemoved);
            dekanat.SubscribeToRemove(GoToVoenkomat);
            //dekanat.SubscribeToAdd(std => Console.WriteLine("Ещё раз поздравляем студента {0} с поступлением", std.Name));

            dekanat.NewItemAdded        += OnStudentAdd;
            dekanat.ExelentStudentAdded += exelent_student => Console.WriteLine("!!! {0} !!!", exelent_student);

            var rnd = new Random();

            for (var i = 0; i < 100; i++)
            {
                dekanat.Add(new Student
                {
                    Name    = $"Student {i + 1}",
                    Ratings = rnd.GetRandomIntValues(20, 2, 6).ToList() //GetRandomRatings(rnd, 20, 50)
                });
            }

            dekanat.Add(new Student {
                Name = "Strange student", Ratings = new List <int> {
                    5, 5, 5, 4
                }
            });

            const string students_data_file = "students.csv";

            dekanat.SaveToFile(students_data_file);

            var dekanat2 = new Dekanat();

            dekanat2.LoadFromFile(students_data_file);


            var student = new Student
            {
                Name    = $"Student",
                Ratings = GetRandomRatings(rnd, 20, 50)
            };

            //var result = student.CompareTo(dekanat);

            //foreach (var std in dekanat2)
            //    Console.WriteLine(std);

            var average_rating     = dekanat2.Average(s => s.AverageRating);
            var sum_average_rating = dekanat2.Sum(s => s.AverageRating);

            var random_student_name = rnd.NextValue("Иванов", "Петров", "Сидоров");

            var random_rating = rnd.NextValue(2, 3, 4, 5);

            //StudentProcessor processor = new StudentProcessor(GetIndexedStudentName);
            //StudentProcessor processor = GetIndexedStudentName;

            //var index = 0;
            //foreach (var s in dekanat2)
            //    Console.WriteLine(processor(s, index++));

            //Console.ReadLine();
            //processor = GetAverageStudentRating;

            //index = 0;
            //foreach (var s in dekanat2)
            //    Console.WriteLine(processor(s, index++));

            //Console.ReadLine();
            //ProcessStudents(dekanat2, GetIndexedStudentName);

            //Console.ReadLine();
            //ProcessStudents(dekanat2, GetAverageStudentRating);

            //Console.ReadLine();
            //Console.Clear();
            //ProcessStudentsStandard(dekanat2, PrintStudent);

            //var metrics = GetStudentsMetrics(dekanat2, std => std.Name.Length + (int) (student.AverageRating * 10));

            Console.ReadLine();
            var student_to_remove = dekanat.Skip(65).First();

            dekanat.Remove(student_to_remove);

            Console.ReadLine();
        }
Example #4
0
        public static void Run()
        {
            const string student_name   = "Names.txt";
            var          file_with_name = new FileInfo(student_name);

            var rnd     = new Random();
            var dekanat = new Dekanat();

            for (var i = 0; i < 10; i++)
            {
                dekanat.Add(new StudentsGroup {
                    Name = $"Group {i + 1}"
                });
            }

            foreach (var line in file_with_name.GetLines())
            {
                if (string.IsNullOrEmpty(line))
                {
                    continue;
                }
                var components = line.Split(' ');
                if (components.Length < 2)
                {
                    continue;
                }

                var student = new Student
                {
                    LastName  = components[0],
                    FirstName = components[1],
                    Ratings   = rnd.GetRandomIntValues(20, 3, 6).ToList()
                };
                dekanat.Add(student);
            }

            //IEnumerable<Student> students_enum = dekanat;
            //IQueryable<Student> students_query = students_enum.AsQueryable();

            //var sStudents = Enumerable.Range(1, 100)
            //    .Select(i => new Student
            //    {
            //        FirstName = $"Student {i}"
            //    });
            //foreach(var student in sStudents)
            //{
            //    Console.WriteLine(student);
            //}

            var bStudents = dekanat.Where(s => s.AvgRating > 4);

            foreach (var bs in bStudents)
            {
                Console.WriteLine(bs);
            }
            var bCount = bStudents.Count();

            bStudents = dekanat.Where(s => s.AvgRating < 4);
            foreach (var bs in bStudents)
            {
                Console.WriteLine(bs);
            }
            var lCount = bStudents.Count();

            Console.WriteLine("{0} {1}", bCount, lCount);

            //var nameLengths = file_with_name.GetLines()
            //    .Select(str => str.Split(' '))
            //    .Select(strs => new KeyValuePair<string , int>(strs[1], strs[1].Length))
            //    .Where(v => v.Value > 4)
            //    .OrderBy(v => v.Value)
            //    .ToArray();

            IEnumerable <Student>       students = dekanat;
            IEnumerable <StudentsGroup> groups   = dekanat.Groups;

            var students_groups = students
                                  .Join(
                groups,
                stud => stud.GroupId,
                grp => grp.Id,
                (stud, grp) => new { Student = stud, Group = grp }
                )
                                  .Where(s => s.Student.AvgRating > 4);

            foreach (var stdGrp in students_groups)
            {
                Console.WriteLine("{0} == {1}", stdGrp.Student, stdGrp.Group);
            }

            var students_group_dict = students_groups
                                      .GroupBy(
                g => g.Group.Name
                )
                                      .ToDictionary(
                g => g.Key,
                g => g.Select(v => v.Student.LastName));
        }
        public static void Run()
        {
            const string student_names_file = "Names.txt";

            var file_with_names = new FileInfo(student_names_file);

            var rnd     = new Random();
            var dekanat = new Dekanat();

            for (var i = 0; i < 10; i++)
            {
                dekanat.Add(new StudentsGroup {
                    Name = $"Группа {i + 1}"
                });
            }
            foreach (var line in file_with_names.GetLines())
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    continue;
                }
                var components = line.Split(' ');
                if (components.Length < 3)
                {
                    continue;
                }

                var student = new Student
                {
                    LastName   = components[0],
                    FirstName  = components[1],
                    Patronymic = components[2],
                    Ratings    = rnd.GetRandomIntValues(20, 3, 5).ToList()
                };
                dekanat.Add(student);
            }
            //IEnumerable<Student> students_enum = dekanat;
            //IQueryable<Student> student_query = students_enum.AsQueryable();

            //foreach(var i in Enumerable.Range(0, 100))
            //{

            //}
            //for(var i = 0; i < 100; i++)
            //{

            //}

            //var simple_students = Enumerable.Range(1, 100)
            //    .Select(i => new Student { FirstName = $"Student {i}" });


            //foreach (var student in simple_students)
            //    Console.WriteLine(student);

            var best_students = dekanat.Where(student => student.AverageRating >= 4);

            var last_students = dekanat.Where(student => student.AverageRating < 4);


            foreach (var best_student in best_students)
            {
                Console.WriteLine(best_students);
            }
            foreach (var last_student in last_students)
            {
                Console.WriteLine(best_students);
            }

            var best_count = best_students.Count();
            var last_count = last_students.Count();

            var names_lengths = file_with_names.GetLines()
                                .Select(str => str.Split(' '))
                                .Select(strs => new KeyValuePair <string, int>(strs[1], strs[1].Length))
                                .Where(v => v.Value > 4)
                                .OrderBy(v => v.Value)
                                .ToArray();
        }