public void ModifyEntity(Employee employee)
        {
            EmployeeDTO employeeDTO = AllEmployees.Where <EmployeeDTO>(x => x.ID == employee.ID).FirstOrDefault();

            if (employeeDTO == null)
            {
                employeeDTO = new EmployeeDTO()
                {
                    ID      = employee.ID,
                    FIO     = employee.FIO,
                    Company = new CompanyDTO {
                        ID = employee.Company.ID, Name = employee.Company.Name
                    }
                };
                AllEmployees.Add(employeeDTO);
            }
            else
            {
                AllEmployees.Remove(employeeDTO);
                employeeDTO = new EmployeeDTO()
                {
                    ID      = employee.ID,
                    FIO     = employee.FIO,
                    Company = new CompanyDTO {
                        ID = employee.Company.ID, Name = employee.Company.Name
                    }
                };
                AllEmployees.Add(employeeDTO);
            }
        }
        public void Search(string searched)
        {
            searched = searched.ToLower();
            List <Employees> results = new List <Employees>();

            results = AllEmployees.Where((x) => {
                string initials = x.FirstName.ToLower().Substring(0, 2) + x.LastName.ToLower().Substring(0, 2);
                return(initials.Contains(searched));
            }).ToList();

            List <Employees> results2 = AllEmployees.Where((x) => {
                string fullName = x.FirstName.ToLower() + " " + x.LastName.ToLower();
                string initials = x.FirstName.ToLower().Substring(0, 2) + x.LastName.ToLower().Substring(0, 2);
                //string region = x.Region==null?"Unknown region"
                return(!(initials.Contains(searched)) &&
                       (fullName.Contains(searched) ||
                        x.Country.ToLower() == searched ||
                        x.Region.ToLower() == searched));
            }).ToList();

            foreach (Employees e in results2)
            {
                results.Add(e);
            }

            EmployeeResults = new ObservableCollection <Employees>(results);
        }
 protected void Delete_ButtonClick(object sender, EventArgs e)
 {
     AllEmployees.DataSource = SqlDataSource2;
     SqlDataSource2.Select(DataSourceSelectArguments.Empty);
     AllEmployees.DataTextField  = "last_name";
     AllEmployees.DataValueField = "ssn";
     AllEmployees.DataBind();
 }
Example #4
0
 public void AddEmployee(Employee employee)
 {
     employee.ID = employeeService.AddEmployee(employee);
     AllEmployees.Add(employee);
     Filter();
     Search();
     mainWindow.DisplayEmployeesList();
 }
Example #5
0
 public void UpdateEmployee(Employee employee)
 {
     employeeService.UpdateEmployee(employee);
     AllEmployees[AllEmployees.IndexOf(AllEmployees.FirstOrDefault(m => m.ID == employee.ID))] = employee;
     Filter();
     Search();
     mainWindow.DisplayEmployeesList();
 }
Example #6
0
 public void DeleteEmployee(Employee employee)
 {
     employeeService.DeleteEmployee(employee);
     AllEmployees.Remove(employee);
     Filter();
     Search();
     mainWindow.DisplayEmployeesList();
 }
        private void AddEmployeeExecute(object parameter)
        {
            var newEmployee = new EmployeeViewModel(m_unitOfWorkFactory, AllDepartments.First());

            AllEmployees.Add(newEmployee);

            SelectedEmployee = newEmployee;
        }
Example #8
0
 private void DeleteEmployee()
 {
     var selected = AllEmployees.Where(e => e.EmpIsSelected).ToList();
     //// TODO: Если из бд не удалится по какой-то причине, надо об этом сообщить, чтобы из коллекции тоже не удалялось.
     //// Либо после удаления из бд инициировать перезагрузку коллекции.
     //DeleteEmployeeFromDatabase(selected);
     //DeleteEmployeeFromCollection(selected);
 }
 protected void FormView1_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
 {
     AllEmployees.DataSource = SqlDataSource2;
     SqlDataSource2.Select(DataSourceSelectArguments.Empty);
     AllEmployees.DataTextField  = "last_name";
     AllEmployees.DataValueField = "ssn";
     AllEmployees.DataBind();
 }
        public async Task <IActionResult> ViewEmployees()
        {
            var workers = await repoWorker.getEmployees();

            var storageWorkers = await repoStorageWorker.getStorageWorkers();

            AllEmployees employees = new AllEmployees(workers, storageWorkers);

            return(View(employees));
        }
Example #11
0
        private void Search()
        {
            string searchText = null;

            if (!string.IsNullOrEmpty(SearchText))
            {
                searchText = SearchText.ToLower().Trim();
                Employees  = new ObservableCollection <Models.Employee>(AllEmployees.Where(x => ($"{x.FirstName} {x.LastName}".ToLower().Contains(searchText)) || (x.Salary.ToString().ToLower().Contains(searchText))));
            }
        }
 public OrderFormViewModel()
 {
     Order           = StateService.CurrentOrder;
     AllCustomers    = ComboBoxService.GetOptions(ComboBoxTargets.Customers);
     CurrentCustomer = AllCustomers.FirstOrDefault(x => x.ID == Order.CustomerID);
     AllEmployees    = ComboBoxService.GetOptions(ComboBoxTargets.Employees);
     CurrentEmployee = AllEmployees.FirstOrDefault(x => x.ID == Order.EmployeeID);
     AllProducts     = ComboBoxService.GetOptions(ComboBoxTargets.Products);
     CurrentProduct  = AllProducts.FirstOrDefault(x => x.ID == Order.ProductID);
 }
Example #13
0
 /// <summary>
 /// Displays employee by searched Id
 /// </summary>
 /// <param name="id"></param>
 public void DisplayEmployeeById(int id)
 {
     AllUsers.Clear();
     foreach (Employee e in AllEmployees.ToList())
     {
         if (e.EmployeeId == id)
         {
             AllUsers.Add(e);
         }
     }
 }
Example #14
0
        public void NewEmployee()
        {
            Employee e = new Employee();

            e.EmployeeName = "naam";
            e.Email        = "email";
            e.Address      = "adres";
            e.Phone        = "telefoonnummer";
            e.Edit         = Visibility.Visible;
            AllEmployees.Add(e);
        }
Example #15
0
        /// <summary>
        /// Обрабатывает одну строку из списка рассылки
        /// </summary>
        /// <param name="recipientString"></param>
        /// <param name="errorMessage"></param>
        /// <returns></returns>
        string ProcessUsername(string username)
        {
            Employee foundEmployee = AllEmployees.FirstOrDefault(i => (string.Compare(i.Username, username) == 0));

            if (foundEmployee != null)
            {
                return(foundEmployee.ToString);
            }

            return(username);
        }
 protected void FormView1_ItemDeleted(object sender, FormViewDeletedEventArgs e)
 {
     AllEmployees.DataSource = SqlDataSource2;
     SqlDataSource2.Select(DataSourceSelectArguments.Empty);
     AllEmployees.DataTextField  = "last_name";
     AllEmployees.DataValueField = "ssn";
     AllEmployees.DataBind();
     Add.Visible          = false;
     initial.Visible      = true;
     employeeview.Visible = false;
 }
Example #17
0
        /// <summary>
        /// We get the picked employee and sends it to be deleted from DB
        /// </summary>
        /// <param name="employee"></param>
        public void DeleteEmployee(Employee employee)
        {
            ApiHelper.Instance.DeleteEmployee(employee.EmployeeId);

            foreach (Employee e in AllEmployees.ToList())
            {
                if (e.EmployeeId == employee.EmployeeId)
                {
                    AllEmployees.Remove(e);
                    AllUsers.Remove(e);
                }
            }
        }
Example #18
0
        public static IList <T> Find <T>(Func <T, bool> filter) where T : class
        {
            if (typeof(T) == typeof(Department))
            {
                return(AllDepartments.Where(department => filter(department as T)).ToList() as IList <T>);
            }
            if (typeof(T) == typeof(Employee))
            {
                return(AllEmployees.Where(empl => filter(empl as T)).ToList() as IList <T>);
            }

            throw new NotSupportedException("Type not supported");
        }
        private void OnNextCommand(object obj)
        {
            TaskManager.RunInBackground(() =>
            {
                _currentEmployeeIndex++;
                if (AllEmployees.Count() <= _currentEmployeeIndex)
                {
                    _currentEmployeeIndex = 0;
                }


                BuildUI();
            });
        }
        private void DeleteEmployeeExecute(object parameter)
        {
            // update model
            using (IUnitOfWork unitOfWork = m_unitOfWorkFactory.Create())
            {
                Employee storedEmployee = unitOfWork.Employees.Get(SelectedEmployee.EmployeeId);
                unitOfWork.Employees.Remove(storedEmployee);
                unitOfWork.Complete();
            }

            // update viewmodel
            AllEmployees.Remove(SelectedEmployee);
            SelectedEmployee = null;
        }
        private void OnPreviousCommand(object obj)
        {
            TaskManager.RunInBackground(() =>
            {
                _currentEmployeeIndex--;
                if (_currentEmployeeIndex < 0)
                {
                    _currentEmployeeIndex = AllEmployees.Count();
                }


                BuildUI();
            });
        }
Example #22
0
        /// <summary>
        /// Обновляет строку RecipientsString  и коллекцию RecipientEmployees по коллекции Recipients
        /// </summary>
        /// <remarks>
        /// Необхдимо вызввать при каждом изменении Recipients
        /// </remarks>
        public void UpdateByRecipients()
        {
            recipientsEmployees.Clear();
            foreach (var item in recipients)
            {
                Employee employee = AllEmployees.FirstOrDefault(row => (string.Compare(row.Username, item.RecipientUsername) == 0));
                if (employee != null)
                {
                    recipientsEmployees.Add(employee);
                }
            }
            string buf = Employee.CollectionToString(recipientsEmployees);

            RecipientsString = JoinToString(UnrecognizedUsernames, buf);
        }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Add.Visible          = false;
            employeeview.Visible = false;

            ProjectName.DataSource     = SqlDataSource1;
            ProjectName.DataTextField  = "name";
            ProjectName.DataValueField = "project_id";
            ProjectName.DataBind();

            AllEmployees.DataSource     = SqlDataSource2;
            AllEmployees.DataTextField  = "last_name";
            AllEmployees.DataValueField = "ssn";
            AllEmployees.DataBind();
        }
    }
        private void BuildUI()
        {
            if (AllEmployees.Count() > _currentEmployeeIndex)
            {
                var Empobj = AllEmployees.Skip(_currentEmployeeIndex).FirstOrDefault();
                if (Empobj != null)
                {
                    CurrentEmployee = Empobj;


                    List <EmployeeHours> _list = new List <EmployeeHours>();

                    for (var i = Convert.ToDateTime(PayStartDate); i <= Convert.ToDateTime(PayEndDate); i = i.AddDays(1))
                    {
                        _list.Add(new EmployeeHours
                        {
                            WorkDate = i,

                            Employee = new Employee {
                                EmployeeNumber = CurrentEmployee.EmployeeNumber, EmployeeFirstName = CurrentEmployee.EmployeeFirstName, EmployeeLastName = CurrentEmployee.EmployeeLastName, HireDate = CurrentEmployee.HireDate
                            },
                            HoursWorked = 0,
                            Description = String.Empty
                        });
                    }


                    var db = EmployeeData.GetEmployeeHoursByEmpnonDate(CurrentEmployee.EmployeeNumber, Convert.ToDateTime(PayStartDate), Convert.ToDateTime(PayEndDate));
                    EmployeeHours = (from l in _list
                                     join d in db on l.WorkDate equals d.WorkDate into temp
                                     from d in temp.DefaultIfEmpty()
                                     select new EmployeeHours
                    {
                        WorkDate = l.WorkDate,
                        Employee = l.Employee,
                        Id = d == null?0:d.Id,
                        Description = d == null?String.Empty:d.Description,
                        HoursWorked = d == null?0 : d.HoursWorked
                    }).ToList();
                }
            }
        }
        public async Task <IActionResult> ViewEmployees(string Search)
        {
            if (Search != null)
            {
                var workers = await repoWorker.search(Search);

                var storageWorkers = await repoStorageWorker.search(Search);

                AllEmployees employees = new AllEmployees(workers, storageWorkers);
                return(View(employees));
            }
            else
            {
                var workers = await repoWorker.getEmployees();

                var storageWorkers = await repoStorageWorker.getStorageWorkers();

                AllEmployees employees = new AllEmployees(workers, storageWorkers);
                return(View(employees));
            }
        }
Example #26
0
        /// <summary>
        /// Проверяет существование  пользователя по его username
        /// </summary>
        /// <param name="usernames"></param>
        /// <returns>
        /// Возвращает строку содержащую ошибки проверки
        /// </returns>
        string CheckUsernameExistence(string[] usernames)
        {
            string errorMessage = string.Empty;

            if (usernames != null)
            {
                foreach (var item in usernames)
                {
                    string   msg           = string.Empty;
                    Employee foundEmployee = AllEmployees.FirstOrDefault(i => (string.Compare(i.Username, item) == 0));
                    if (foundEmployee == null)
                    {
                        msg = AddUsernameToUnrecognizedUsernames(item);
                    }
                    else
                    {
                        AddEmployeeToRecipientsEmployees(foundEmployee);
                    }

                    errorMessage = JoinToString(errorMessage, msg);
                }
            }
            return(errorMessage);
        }
Example #27
0
        static void Main(string[] args)
        {
            ArrayList list = new ArrayList {
                "First", "Second", "Third"
            };
            IEnumerable <string> strings = list.Cast <string>();

            foreach (var item in list)
            {
                Console.WriteLine(item);
            }

            list = new ArrayList {
                1, 3, 2
            };
            IEnumerable <int> ints = list.Cast <int>();

            foreach (var item in ints)
            {
                Console.WriteLine(item);
            }

            // short cannot be casted to int
            //List<short> shortList = new List<short> { 1, 2, 3, 4 };
            //ints = shortList.Cast<int>();
            //foreach (var item in ints)
            //{
            //    Console.WriteLine(item);
            //}

            // на нетипізованій колекції ми не можемо визвати Select
            Console.WriteLine(new string('-', 80));
            foreach (var item in list.Cast <int>().Select(i => i * i))
            {
                Console.WriteLine(item);
            }

            // приведення до типу перед використанням колекції
            Console.WriteLine(new string('-', 80));
            List <IInterface> myList = new List <IInterface> {
                new MyClass {
                    A = 1, N = "Bla"
                },
                new MyClass {
                    A = 4, N = "Gla"
                },
                new MyClass {
                    A = 12, N = "Ila"
                },
                new MyClass {
                    A = 32, N = "Bla"
                },
                new MyClass {
                    A = 32, N = "Ala"
                }
            };

            List <IInterface> myList1 = new List <IInterface> {
                new MyClass {
                    A = 1, N = "Bla1"
                },
                new MyClass {
                    A = 4, N = "Gla1"
                },
                new MyClass {
                    A = 22, N = "Ila1"
                },
                new MyClass {
                    A = 31, N = "Bla1"
                },
                new MyClass {
                    A = 32, N = "Ala1"
                }
            };

            var myListElements = myList.Cast <MyClass>().Select(m => m.A);

            foreach (var item in myListElements)
            {
                Console.WriteLine(item);
            }

            // застосування декілької where
            Console.WriteLine(new string('-', 80));
            var myFilteredList = myList.Cast <MyClass>()
                                 .Where(m => m.A > 0)
                                 .Where(m => m.A > 1)
                                 .Where(m => m.A < 20)
                                 .Select(m => m.A * m.A);

            foreach (var item in myFilteredList)
            {
                Console.WriteLine(item);
            }

            // сортування даних
            Console.WriteLine(new string('-', 80));
            var mySortedList = myList.Cast <MyClass>()
                               .Where(m => m.A > 0)
                               .OrderByDescending(m => m.A)
                               .ThenBy(m => m.N)
                               .Select(m => new { A = m.A, N = m.N });

            foreach (var item in mySortedList)
            {
                Console.WriteLine(item.A + " : " + item.N);
            }

            // змінна let
            Console.WriteLine(new string('-', 80));
            var myLet = from m in myList.Cast <MyClass>()
                        let Number                       = m.A
                                                let Name = m.N
                                                           orderby Number
                                                           select new { Num = Number, SomeName = Name };

            foreach (var item in myLet)
            {
                Console.WriteLine(item);
            }

            // let в термінах розширюючих методів
            Console.WriteLine(new string('-', 80));
            var myLetInMethod = myList.Cast <MyClass>()
                                .Select(u => new { u, u.A })
                                .OrderBy(z => z.A)
                                .Select(z => new { Name = z.u.N, Number = z.A });

            foreach (var item in myLetInMethod)
            {
                Console.WriteLine(item);
            }

            // inner JOIN через LINQ
            Console.WriteLine(new string('-', 80));
            var myInnerJoinedList = from m in myList.Cast <MyClass>()
                                    join m1 in myList1.Cast <MyClass>()
                                    on m.A equals m1.A
                                    select new { m_A = m.A, m1_A = m1.A, m_Name = m.N, m1_Name = m1.N };

            foreach (var item in myInnerJoinedList)
            {
                Console.WriteLine("M.A = {0}, M1.A = {1}, M.Name = {2}, M1.Name = {3}", item.m_A, item.m1_A, item.m_Name, item.m1_Name);
            }

            // inner join фільтрована колекція (простіше якшо лівою є колекція яку треба сортувати + вигідніше сортувати до join)
            Console.WriteLine(new string('-', 80));
            var myInnerFilteredList = from m in myList.Cast <MyClass>()
                                      where m.A > 10
                                      join m1 in myList1.Cast <MyClass>()
                                      on m.A equals m1.A
                                      select new { mA = m.A, m1A = m1.A, mN = m.N, m1N = m1.N };

            var myInnerFilteredList1 = from m1 in myList1.Cast <MyClass>()
                                       join m in (from m in myList.Cast <MyClass>()
                                                  where m.A > 10
                                                  select m)
                                       on m1.A equals m.A
                                       select new { m_A = m.A, m1_A = m1.A, m_Name = m.N, m1_Name = m1.N };

            foreach (var item in myInnerFilteredList1)
            {
                Console.WriteLine(item);
            }

            // зєднання для робітників і менеджерів
            List <Human> employees = new List <Human>
            {
                new Employee {
                    ID = 1, Age = 23, Name = "Oles", ManagerID = 1
                },
                new Employee {
                    ID = 2, Age = 18, Name = "Alex", ManagerID = 2
                },
                new Employee {
                    ID = 3, Age = 34, Name = "Ivan", ManagerID = 1
                },
                new Employee {
                    ID = 4, Age = 22, Name = "Vasil", ManagerID = 2
                },
                new Employee {
                    ID = 5, Age = 23, Name = "Nazar", ManagerID = 1
                },
                new Employee {
                    ID = 6, Age = 54, Name = "Valentin", ManagerID = 2
                },
                new Employee {
                    ID = 7, Age = 33, Name = "Boris", ManagerID = 1
                }
            };
            List <Human> managers = new List <Human>
            {
                new Manager {
                    ID = 1, Age = 25, Name = "Bogdan", Employees = new List <int> {
                        1, 3, 5, 7
                    }
                },
                new Manager {
                    ID = 2, Age = 32, Name = "Roman", Employees = new List <int> {
                        2, 4
                    }
                },
                new Manager {
                    ID = 3, Age = 40, Name = "Valera"
                }
            };

            // inner join менеджерів і робітників
            Console.WriteLine("1" + new string('-', 79));
            var empMangInnerJoin = from e in employees.Cast <Employee>()
                                   join m in managers.Cast <Manager>()
                                   on e.ManagerID equals m.ID
                                   orderby e.ID
                                   select new { ManagerId = m.ID, ManagerName = m.Name, EmpId = e.ID, EmpName = e.Name };

            foreach (var item in empMangInnerJoin)
            {
                Console.WriteLine("Employee ID = {0}, manager id = {1}, employee name = {2}, manager name = {3}",
                                  item.EmpId, item.ManagerId, item.EmpName, item.ManagerName);
            }

            // inner join через розшивюючі методи
            Console.WriteLine("2" + new string('-', 79));
            var empMangInnerJoinExtMethods = employees.Cast <Employee>()
                                             .Join(managers.Cast <Manager>(),
                                                   e => e.ManagerID,
                                                   m => m.ID,
                                                   (e, m) => new { ManagerId = m.ID, ManagerName = m.Name, EmpId = e.ID, EmpName = e.Name })
                                             .OrderBy(z => z.EmpId);

            foreach (var item in empMangInnerJoinExtMethods)
            {
                Console.WriteLine("Employee ID = {0}, manager id = {1}, employee name = {2}, manager name = {3}",
                                  item.EmpId, item.ManagerId, item.EmpName, item.ManagerName);
            }

            // групове зєднання менеджера з робітниками (групове з'єднання виводить навіть ті елементи лівої таблиці які не мають
            // відповідних у правій таблиці - це як left outer join)
            Console.WriteLine("3" + new string('-', 79));
            var empMangInnerIntoJoin = from m in managers.Cast <Manager>()
                                       join e in employees.Cast <Employee>()
                                       on m.ID equals e.ManagerID into allEmployees
                                       where allEmployees.Count() > 1
                                       select new { ManagerId = m.ID, ManagerName = m.Name, AllEmployees = allEmployees };

            foreach (var manager in empMangInnerIntoJoin)
            {
                Console.WriteLine("Manager id = {0}, name = {1}", manager.ManagerId, manager.ManagerName);
                foreach (var emp in manager.AllEmployees)
                {
                    Console.WriteLine(" Employee id = {0}, name = {1}", emp.ID, emp.Name);
                }
            }

            // теж саме тільки з group join
            Console.WriteLine("4" + new string('-', 79));
            var empManagerOuterJoin = managers.Cast <Manager>()
                                      .GroupJoin(employees.Cast <Employee>(),
                                                 m => m.ID,
                                                 e => e.ManagerID,
                                                 (m, emps) => new { ManagerId = m.ID, ManagerName = m.Name, AllEmployees = emps });

            //.Where(z => z.AllEmployees.Count() > 1);

            foreach (var manager in empManagerOuterJoin)
            {
                Console.WriteLine("Manager id = {0}, name = {1}", manager.ManagerId, manager.ManagerName);
                foreach (var emp in manager.AllEmployees)
                {
                    Console.WriteLine(" Employee id = {0}, name = {1}", emp.ID, emp.Name);
                }
            }

            // генерування кількості працівників для кожного менеджера
            Console.WriteLine("5" + new string('-', 79));
            var mngEmpsCount = from m in managers.Cast <Manager>()
                               join e in employees.Cast <Employee>()
                               on m.ID equals e.ManagerID into AllEmployees
                               select new { ManagerID = m.ID, ManagerName = m.Name, EmpsCount = AllEmployees.Count() };


            foreach (var item in mngEmpsCount)
            {
                Console.WriteLine("Manager ID = {0}, manager name = {1}, employees number = {2}",
                                  item.ManagerID, item.ManagerName, item.EmpsCount);
            }

            // тож саме тільки з розширюючими методами
            Console.WriteLine("6" + new string('-', 79));
            var msgEmpsCountExpMethods = managers.Cast <Manager>()
                                         .GroupJoin(employees.Cast <Employee>(),
                                                    m => m.ID,
                                                    e => e.ManagerID,
                                                    (m, emps) => new { ManagerID = m.ID, ManagerName = m.Name, EmpsCount = emps.Count() });

            foreach (var item in msgEmpsCountExpMethods)
            {
                Console.WriteLine("Manager ID = {0}, manager name = {1}, employees number = {2}",
                                  item.ManagerID, item.ManagerName, item.EmpsCount);
            }

            // cross join
            Console.WriteLine("7" + new string('-', 79));
            var someSequence = from m in managers.Cast <Manager>()
                               from ml in myList.Cast <MyClass>()
                               select new { ManagerId = m.ID, SomeValue = ml.A };

            foreach (var item in someSequence)
            {
                Console.WriteLine("Manager id = {0}, some value = {1}", item.ManagerId, item.SomeValue);
            }

            // cross join коли права послідовність залежить від лівої послідовності
            Console.WriteLine("8" + new string('-', 79));
            var fooSequence = from n in Enumerable.Range(1, 4)
                              from m in Enumerable.Range(11, n)
                              select new { Left = n, Right = m };

            foreach (var item in fooSequence)
            {
                Console.WriteLine("Left = {0}, right = {1}", item.Left, item.Right);
            }

            // cross join коли права послідовність залежить від лівої послідовності
            // через розширюючі методи
            // *** також треба зазначити що SelectMany має потокове виконання, порівнюючи з внутрішніми і груповими
            // зєднаннями - де права таблиця завантажується одразу, тут права таблиця буде заново генеруватись для
            // кожного елемента з лівої таблиці ***
            Console.WriteLine("9" + new string('-', 79));
            var fooSequenceExtMethods = Enumerable.Range(1, 4)
                                        .SelectMany(n => Enumerable.Range(11, n),
                                                    (n, m) => new { Left = n, Right = m });

            foreach (var item in fooSequenceExtMethods)
            {
                Console.WriteLine("Left = {0}, right = {1}", item.Left, item.Right);
            }

            // cross join для працівників і менеджерів
            Console.WriteLine("9.1" + new string('-', 77));
            var empMngsSelMany = managers.Cast <Manager>()
                                 //.Where(m => m.ID == 1)
                                 .SelectMany(m => employees.Cast <Employee>()
                                             .Where(e => e.ManagerID == m.ID)
                                             .Select(e => new { EmpId = e.ID, EmpName = e.Name }),
                                             (m, e) => new { ManagerId = m.ID, EmpId = e.EmpId, EmpName = e.EmpName })
                                 .GroupBy(z => z.ManagerId,
                                          z => new { EmpId = z.EmpId, EmpName = z.EmpName })
                                 .OrderByDescending(z => z.Key);

            foreach (var item in empMngsSelMany)
            {
                //Console.WriteLine("Manager id = {0} : Employee id = {1}, employee name = {2}",item.ManagerId, item.EmpId, item.EmpName);
                Console.WriteLine("Manager id = {0}", item.Key);
                foreach (var e in item)
                {
                    Console.WriteLine(" Employee id = {0}, employee name = {1}", e.EmpId, e.EmpName);
                }
            }

            // групування елементів
            // *** групування не виконується потоково воно буферизує елементи які відсортовані по ключу ***
            Console.WriteLine("10" + new string('-', 78));
            var groupedEmployees = from e in employees.Cast <Employee>()
                                   where e.ManagerID >= 1
                                   group e by e.ManagerID;

            foreach (var item in groupedEmployees)
            {
                Console.WriteLine("Manager id : {0}", item.Key);
                foreach (var emp in item)
                {
                    Console.WriteLine(" Employee id = {0}, employee name = {1}", emp.ID, emp.Name);
                }
            }

            // групування елементів на основі розширюючих методів
            Console.WriteLine("11" + new string('-', 78));
            var groupedEmployeesExtMethods = employees.Cast <Employee>()
                                             .Where(e => e.ManagerID >= 1)
                                             .GroupBy(e => e.ManagerID);

            foreach (var item in groupedEmployeesExtMethods)
            {
                Console.WriteLine("Manager id : {0}", item.Key);
                foreach (var emp in item)
                {
                    Console.WriteLine(" Employee id = {0}, employee name = {1}", emp.ID, emp.Name);
                }
            }

            // групування елементів вибираючи не сам елемент а його пропертю
            Console.WriteLine("12" + new string('-', 78));
            var groupedEmpsPropetry = from e in employees.Cast <Employee>()
                                      where e.ManagerID >= 1
                                      group e.ID by e.ManagerID;

            foreach (var item in groupedEmpsPropetry)
            {
                Console.WriteLine("Manager id = {0}", item.Key);
                foreach (var e in item)
                {
                    Console.WriteLine(" " + e);
                }
            }

            // теж саме через розширюючий метод
            Console.WriteLine("13" + new string('-', 78));
            var groupedEpmsPropExtMethods = employees.Cast <Employee>()
                                            .GroupBy(e => e.ManagerID,
                                                     e => e.ID);

            foreach (var item in groupedEpmsPropExtMethods)
            {
                Console.WriteLine("Manager id = {0}", item.Key);
                foreach (var e in item)
                {
                    Console.WriteLine(" " + e);
                }
            }

            // продовження запиту
            Console.WriteLine("14" + new string('-', 78));
            var queryContinuation = from e in employees.Cast <Employee>()
                                    where e.ManagerID >= 0
                                    group e by e.ManagerID
                                    into groupedSeq
                                    select new { ManagerId = groupedSeq.Key, Count = groupedSeq.Count() };

            foreach (var item in queryContinuation)
            {
                Console.WriteLine("Manager id = {0}, emps count = {1}", item.ManagerId, item.Count);
            }

            // продовження запиту через розширюючі методи
            Console.WriteLine("15" + new string('-', 78));
            var queryContinuationExtMethods = employees.Cast <Employee>()
                                              .Where(e => e.ManagerID >= 1)
                                              .GroupBy(e => e.ManagerID)
                                              .Select(z => new { ManagerId = z.Key, Count = z.Count() });

            foreach (var item in queryContinuationExtMethods)
            {
                Console.WriteLine("Manager id = {0}, emps count = {1}", item.ManagerId, item.Count);
            }



            Console.ReadLine();
        }
Example #28
0
 void RemoveExecute(object param)
 {
     AllEmployees.Remove(SelectEmployee);
 }
Example #29
0
 void AddExecute(object param)
 {
     AllEmployees.Add(Employee.CreateEmployee(NewEmployee.Name, NewEmployee.Age));
 }
Example #30
0
 private void Filter()
 {
     Employees = (SelectedDepartment.Equals(TeamName.All) ? AllEmployees : new ObservableCollection <Models.Employee>(AllEmployees.Where(x => x.Team.Equals(SelectedDepartment))));
     this.EmployeeGridTitle = SelectedDepartment == TeamName.All ? "All Employees" : $"{SelectedDepartment.ToString()} Team Employees";
 }