/// <summary>
        /// Reads all records grouped by their department name
        /// </summary>
        /// <returns>The returned grouped collection</returns>
        public string RecordsGroupedByDepartment()
        {
            string final   = "";
            var    toGroup = EmployeeData.Select(emp => new
            {
                FirstName  = emp.FirstName,
                LastName   = emp.LastName,
                Email      = emp.Email,
                Phone      = emp.PhoneNumber,
                HireDate   = emp.HireDate.ToLongDateString(),
                Salary     = emp.Salary,
                Department = (emp.DepartmentId == null) ? null : DepartmentData.First(dept => dept.DepartmentId == emp.DepartmentId).DepartmentName
            }).GroupBy(item => item.Department).ToList();

            toGroup.ForEach(group =>
            {
                //string key = group.Key == null ? "Null" : group.Key;
                final += "\n Department - " + (@group.Key ?? "Null") + ":\n";
                final += " FirstName || LastName || Email || PhoneNumber || HireDate || Salary || Department\n";

                group.ToList().ForEach(item =>
                {
                    final += $" {item.FirstName}    {item.LastName}     {item.Email}    {item.Phone}    {item.HireDate} {item.Salary}   {item.Department} \n";
                });
            });

            return(final);
        }
        /// <summary>
        /// Reads all employees and their Departments, both null and not null
        /// </summary>
        /// <returns>The returned collection</returns>
        public IEnumerable AllEmployeesWithDepartments()
        {
            //EmployeeContext context = new EmployeeContext();
            //return context.Employees.Include(d => d.Department.DepartmentName).ToList();
            //return context.Database.ExecuteSqlRaw("SELECT FirstName, DepartmentName FROM Employees FULL JOIN Departments ON Employees.DepartmentId = Departments.DepartmentId").ToString();//.ToList();

            return(EmployeeData.Select(emp => new
            {
                FirstName = emp.FirstName,
                LastName = emp.LastName,
                Department = (emp.DepartmentId == null) ? null : DepartmentData.First(dept => dept.DepartmentId == emp.DepartmentId).DepartmentName
            }));
        }
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 /// <summary>
 /// Reads all record with their department name
 /// </summary>
 /// <returns>The returned record collection</returns>
 public IEnumerable AllRecordsWithDepartmentName()
 {
     return(EmployeeData.Select(emp => new
     {
         FirstName = emp.FirstName,
         LastName = emp.LastName,
         Email = emp.Email,
         Phone = emp.PhoneNumber,
         HireDate = emp.HireDate.ToLongDateString(),
         Salary = emp.Salary,
         Department = (emp.DepartmentId == null) ? null : DepartmentData.First(dept => dept.DepartmentId == emp.DepartmentId).DepartmentName
     }));
 }