user10908119
user10908119

Reputation:

Need help in C# to delete obj in a list

I have an employee management system which I'm trying to build in c# console application whereas im able to add a new employee.

but I'm not sure on how can I delete a employee from the list.

I have to put together both method then it works.

it seem like i'm unable to call the obj (emp) from my removeEmployee method

Main class

using System;

namespace HRM
{
    class Program
    {
        static void Main(string[] args)
        {

             manageEmp emp = new manageEmp();

             emp.addEmployee();
             emp.removeEmployee();
        }
    }
}

Employee Class

using System;
using System.Collections.Generic;

namespace HRM
{
    public class Employee
    {
        private String empID;
        private String empFirstName;
        private String empLastName;
        private String empDep;
        private String empDOB;
        private String empAddress;
        private int PostalCode;
        private double empSal;


        public Employee()
        {

        }

        public Employee(String aempID, string aempFirstName, string aempLasttName, string aempDep, String aEmpDOB, string aempAddress, int aPostalCode, double aempSal)
        {
            this.EmpID = aempID;
            this.EmpFirstName = aempFirstName;
            this.EmpLastName = aempLasttName;
            this.EmpDep = aempDep;
            this.EmpDOB = aEmpDOB;
            this.EmpAddress = aempAddress;
            this.PostalCode1 = aPostalCode;
            this.EmpSal = aempSal;
        }

        public string EmpID { get => empID; set => empID = value; }
        public string EmpFirstName { get => empFirstName; set => empFirstName = value; }
        public string EmpLastName { get => empLastName; set => empLastName = value; }
        public string EmpDep { get => empDep; set => empDep = value; }
        public string EmpDOB { get => empDOB; set => empDOB = value; }
        public string EmpAddress { get => empAddress; set => empAddress = value; }
        public int PostalCode1 { get => PostalCode; set => PostalCode = value; }
        public double EmpSal { get => empSal; set => empSal = value; }
        public List<Employee> El { get => el; set => el = value; }

        public override string ToString()
        {
            return "Employment ID : " + empID + "\n"
                  + "FirstName : " + EmpFirstName + "\n"
                  + "LastName : " + EmpLastName + "\n"
                  + "Department : " + EmpDep + "\n"
                  + "Date of Birth: " + EmpDOB + "\n"
                  + "Address : " + EmpAddress + "\n"
                  + "PostalCode : " + PostalCode1 + "\n"
                  + "empSal : " + EmpSal + "\n";
        }
    }
}

manageEmp class

using System;
using System.Collections.Generic;

namespace HRM
{
    public class manageEmp
    {
        private List<Employee> el = new List<Employee>();
        public List<Employee> El { get => el; set => el = value; }

        public void addEmployee()
        {

            Console.WriteLine("===================================" + "\n");
            Console.WriteLine("Add an Employee");
            Console.WriteLine("===================================" + "\n");
            Console.WriteLine("");

            Console.WriteLine("Please enter your Employment ID");
            String eID = Console.ReadLine();

            Console.WriteLine("Please enter your First Name");
            String eFirstName = Console.ReadLine();

            Console.WriteLine("Please enter your Last Name");
            String eLasttName = Console.ReadLine();

            Console.WriteLine("Please entter your department");
            String eDep = Console.ReadLine();

            Console.WriteLine("Please enter your Date of Birth");
            String eDOB = Console.ReadLine();

            Console.WriteLine("Please entter your Address");
            String eAddress = Console.ReadLine();

            Console.WriteLine("Please enter your Postal Code");
            int ePostalCode = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Please enter your Salary");
            double eSal = Convert.ToDouble(Console.ReadLine());

            Employee emp = new Employee(eID, eFirstName, eLasttName, eDep, eDOB, eAddress, ePostalCode, eSal);

            emp.El.Add(emp);

        }

        public void viewEmployee()
        {
            Employee nemp = new Employee();

            nemp.El.ForEach(Console.WriteLine);


        }

        public void removeEmployee()
        {
            Console.WriteLine("Please enter a employee Id to be deleted");


            String delemp = Console.ReadLine();
            for (int i = 0; i < El.Count; i++)
            {
                emp = El[i];
                if (delemp.Equals(eID))
                {
                    el.Remove(emp);

                }
                Console.WriteLine(delemp + " Has been deleted sucessfully");
                el.ForEach(Console.WriteLine);
            }
        }
    }
}

Upvotes: 2

Views: 788

Answers (2)

iakobski
iakobski

Reputation: 1274

In the function RemoveEmployee you are creating a new manageEmp object. As the word 'new' implies, this is a different, newly created manageEmp with its own, newly created List<Employee> which doesn't contain any items.

Further, you have declared the function as public void removeEmployee(string eID) so you can't call it with the line emp.removeEmployee().

Upvotes: 0

user11281949
user11281949

Reputation: 105

Your problem is that your employee list is inside the employee class -- so each of the employees has its own list of employees -- and that list only contains that single employee.

Upvotes: 3

Related Questions