Example #1
0
        //////////////////////////////////////СОРТИРОВКА//////////////////////////////////////////////

        /// <summary>
        /// Сортирует сотрудников в организации по различным критериям (3 критерия)
        /// </summary>
        /// <param name="critSort">Критерии сортировки: FIELDSORT.ID - по идентификатору сотрудника,
        ///                                             FIELDSORT.DEP - по департаменту (отделу),
        ///                                             FIELDSORT.AGE - по возрасту,
        ///                                             FIELDSORT.AGE_SALARY - по возрасту и зарплате,
        ///                                             FIELDSORT.DEP_AGE_SALARY - по возр. и зп. в рамках одного деп.</param>
        /// <returns>Лист сотрудников, отсортированных по выбранному критерию</returns>
        private List <Employee> getSortEmployees(FIELDSORT critSort = FIELDSORT.ID)
        {
            List <Employee> lstEmp = new List <Employee>();

            foreach (Department currDep in this.departs_Org)
            {
                lstEmp.AddRange(currDep.returnEmpls());
            }


            switch (critSort)
            {
            case FIELDSORT.ID:
                // Сортируем всех сотрудников по идентификатору
                List <Employee> sortedById =
                    lstEmp.OrderBy(i => i.Id).ToList();

                return(sortedById);

            case FIELDSORT.DEP:
                // Сортируем всех сотрудников по департаменту
                List <Employee> sortedByDep =
                    lstEmp.OrderBy(d => d.Dep.Name).ToList();

                return(sortedByDep);

            case FIELDSORT.AGE:
                // Сортируем всех сотрудников по возрасту
                List <Employee> sortedByAge =
                    lstEmp.OrderBy(a => a.Age).ToList();

                return(sortedByAge);

            case FIELDSORT.AGE_SALARY:
                // Сортируем всех сотрудников по возрасту и зарплате
                List <Employee> sortedByAgeSal =
                    //lstEmp.OrderBy(a => a.Age).ThenBy(s => s.Post.Salary).ToList();
                    lstEmp.OrderBy(a => (a.Age, a.Post.Salary)).ToList();

                return(sortedByAgeSal);

            case FIELDSORT.DEP_AGE_SALARY:
                // Сортируем сотрудников в рамках одного отдела по возрасту и зарплате
                List <Employee> sortedByDepAgeSal =
                    //        //lstEmp.OrderBy(d => d.Dep.Name).ThenBy(a => a.Age).ThenBy(s => s.Post.Salary).ToList();
                    lstEmp.OrderBy(a => (a.Dep.Name, a.Age, a.Post.Salary)).ToList(); // передаем кортеж

                //var tmp = lstEmp.OrderBy(a => (a.Dep.Name, a.Age, a.Post.Salary));

                return(sortedByDepAgeSal);
                //return new List<Employee>();
            }

            return(lstEmp);
        }
Example #2
0
        /// <summary>
        /// Вывод на экран консоли отсортированного списка сотрудников организации
        /// </summary>
        /// <param name="critSort">Критерий сортировки</param>
        public void printSortedEmployees(FIELDSORT critSort = FIELDSORT.ID)
        {
            Console.WriteLine($"| {"Id",2} | {"Имя",10} | {"Фамилия",15} | {"Возраст",7} |" +
                              $"{"Департамент",20} | {"Оплата труда",12} | {"Кол-во проектов",15} |");

            Console.WriteLine("------------------------------------------------------------------------------------------------------");

            if (this.departs_Org != null)
            {
                foreach (Employee emp in this.getSortEmployees(critSort))
                {
                    Console.WriteLine($"| {emp.Id,2} | {emp.Name,10} | {emp.Family,15} | {emp.Age,7} |" +
                                      $"{emp.Dep.Name,20} | {emp.Post.Salary,12} | {emp.CountProjects,15} |");
                }
            }

            Console.ReadKey();
        }
Example #3
0
        /// <summary>
        /// Сортирует работников в организации по различным критериям (6 критериев)
        /// </summary>
        /// <param name="critSort">Критерии сортировки: FIELDSORT.ID - по идентификатору работника (по умолчанию),
        ///                                             FIELDSORT.AGE - по возрасту,
        ///                                             FIELDSORT.NAME - по имени,
        ///                                             FIELDSORT.LNAME - по фамилии,
        ///                                             FIELDSORT.NAME_LNAME - сначала по имени, потом по фамилии,
        ///                                             FIELDSORT.LNAME_NAME - сначала по фамилии, потом по имени</param>
        /// <returns>Коллекция работников, отсортированных по выбранному критерию</returns>
        public void sortedWorkers(FIELDSORT critSort = FIELDSORT.ID)
        {
            switch (critSort)
            {
            case FIELDSORT.ID:
                // Сортируем всех работников по идентификатору
                workers = new ObservableCollection <Worker>(workers.OrderBy(item => item.Id).ToList());
                break;

            case FIELDSORT.AGE:
                // Сортируем всех работников по возрасту
                workers = new ObservableCollection <Worker>(workers.OrderBy(item => item.Age).ToList());
                break;

            case FIELDSORT.NAME:
                // Сортируем всех работников по имени
                workers = new ObservableCollection <Worker>(workers.OrderBy(item => item.Name).ToList());
                break;

            case FIELDSORT.LNAME:
                // Сортируем всех работников по фамилии
                workers = new ObservableCollection <Worker>(workers.OrderBy(item => item.LastName).ToList());
                break;

            case FIELDSORT.NAME_LNAME:
                // Сортируем всех работников по имени и фамилии
                workers = new ObservableCollection <Worker>(workers.OrderBy(item => item.Name).ThenBy(item => item.LastName).ToList());
                break;

            case FIELDSORT.LNAME_NAME:
                // Сортируем всех работников по фамилии и имени
                workers = new ObservableCollection <Worker>(workers.OrderBy(item => item.LastName).ThenBy(item => item.Name).ToList());
                break;
            }

            refreshView();              // обновляем интерфейс после сортировки
        }