Click here to Skip to main content
15,886,016 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Hi, I am new to .Net. We have a task to build to classes Department, Employee. In Department, two properties DeptId,DeptName. In Employee, four properties EmpId,EmpName,EmpSalary , object of Department. So that department class values will get automatically bounded to employee class. We populated values using collections(i.e arraylist). We need to get employee details of same department type with help of dictionary.

We tried like this.
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;

namespace employee
{
    public class Department
    {
        public int deptId { get; set; }
        public string deptName { get; set; }
    }
    public class Employee
    {
        private employee.Department dept;

        public Employee(employee.Department dept)
        {
            // TODO: Complete member initialization
            this.dept = dept;
        }
        public int empId { get; set; }
        public string empName { get; set; }
        public int empSalary { get; set; }
        public Department Department { get; set; }
    }
    class Program
    {
        static void Main(string[] args)
      {
            ArrayList list = new ArrayList();
            Department dept = new Department();
            dept.deptId = 1;
            dept.deptName = "IT";
            list.Add(dept);
            ArrayList list1 = new ArrayList();
            Employee emp = new Employee(dept);
            emp.empId = 101;
            emp.empName = "anusha";
            emp.empSalary = 9000;
            emp.Department = dept;
            list1.Add(emp);
            emp = new Employee(dept);
            emp.empId = 102;
            emp.empName = "Sindhu";
            emp.empSalary = 9000;
            emp.Department = dept;
            list1.Add(emp);
            dept = new Department();
            dept.deptId = 2;
            dept.deptName = "HR";
            list.Add(dept);
            emp = new Employee(dept);
            emp.empId = 103;
            emp.empName = "usha";
            emp.empSalary = 2000;
            emp.Department = dept;
            list1.Add(emp);
            emp = new Employee(dept);
            emp.empId = 104;
            emp.empName = "indhu";
            emp.empSalary = 3000;
            emp.Department = dept;
            list1.Add(emp);
            var query = from Employee employee in list1
                        where employee.empId == 101
                        select employee;
            Console.WriteLine("EmpID\tEmpName\tEmpSal\tDepartmentID");
            foreach(Employee e in query)
            {
                Console.WriteLine(e.empId+"\t"+e.empName +"\t"+e.empSalary+"\t"+e.Department.deptId+"");
            }

            var query1 = (from Employee employee1 in list1
                          join Department department1 in list
                          on employee1.Department.deptId equals department1.deptId into o
                          from department1 in o.DefaultIfEmpty()
                          select employee1);
            Console.WriteLine("----****----");
            Console.WriteLine("EmpID\tEmpName\tEmpSal\tDepartmentName");
            foreach (Employee e1 in query1)
            {
                Console.WriteLine(e1.empId + "\t" + e1.empName + "\t" + e1.empSalary + "\t" + e1.Department.deptName + "");
            }
            var query2=(from Employee employee2 in list1
                         where employee2.empSalary > 1000 && employee2.empSalary<= 10000
                         select employee2);
            Console.WriteLine("----****----");
            Console.WriteLine("EmpID\tEmpName\tEmpSal\tDepartmentID");
            foreach (Employee e2 in query2)
            {
                Console.WriteLine(e2.empId + "\t" + e2.empName + "\t" + e2.empSalary + "\t" + e2.Department.deptId + "");
            }
            Console.ReadLine();
        }
    }

Please help regarding getting emp values by dept through dictionary.

Any Input

-thanks & regards

Sindhu
Posted
Comments
BillWoodruff 7-Jan-14 9:35am    
I see no Dictionary in your code. In this Dictionary what are the Keys, what are the Values ?

1 solution

Since it seems you like LINQ - here's a good start. look at the group by examples:
http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b[^]
 
Share this answer
 
Comments
sindhukrothapalli 7-Jan-14 6:02am    
Hi sir, We need to group employee details with help of dictionary not by Groupby clause.
sindhukrothapalli 7-Jan-14 23:17pm    
Hi Sir we tried like this with dictionary.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;

namespace employee
{
public class Department
{
public int deptId { get; set; }
public string deptName { get; set; }
}
public class Employee
{
private employee.Department dept;

public Employee(employee.Department dept)
{
// TODO: Complete member initialization
this.dept = dept;
}
public int empId { get; set; }
public string empName { get; set; }
public int empSalary { get; set; }
public Department Department { get; set; }
}
class Program
{
static void Main(string[] args)
{
Dictionary<string, list<employee="">> dictionary = new Dictionary<string, list<employee="">>();
List<department> list = new List<department>();
Department dept = new Department();
dept.deptId = 1;
dept.deptName = "IT";
list.Add(dept);
List<employee> list1 = new List<employee>();
Employee emp = new Employee(dept);
emp.empId = 101;
emp.empName = "anusha";
emp.empSalary = 9000;
emp.Department = dept;
list1.Add(emp);
emp = new Employee(dept);
emp.empId = 102;
emp.empName = "Sindhu";
emp.empSalary = 9000;
emp.Department = dept;
list1.Add(emp);
dept = new Department();
dept.deptId = 2;
dept.deptName = "HR";
list.Add(dept);
emp = new Employee(dept);
emp.empId = 103;
emp.empName = "usha";
emp.empSalary = 2000;
emp.Department = dept;
list1.Add(emp);
emp = new Employee(dept);
emp.empId = 104;
emp.empName = "indhu";
emp.empSalary = 3000;
emp.Department = dept;
list1.Add(emp);
var query = from Employee employee in list1
where employee.empId == 101
select employee;
Console.WriteLine("EmpID\tEmpName\tEmpSal\tDepartmentID");
foreach(Employee e in query)
{
Console.WriteLine(e.empId+"\t"+e.empName +"\t"+e.empSalary+"\t"+e.Department.deptId+"");
}

var query1 = (from Employee employee1 in list1
join Department department1 in list
on employee1.Department.deptId equals department1.deptId into o
from department1 in o.DefaultIfEmpty()
select employee1);
Console.WriteLine("----****----");
Console.WriteLine("EmpID\tEmpName\tEmpSal\tDepartmentName");
foreach (Employee e1 in query1)
{
Console.WriteLine(e1.empId + "\t" + e1.empName + "\t" + e1.empSalary + "\t" + e1.Department.deptName + "");
}
var query2=(from Employee employee2 in list1
where employee2.empSalary > 1000 && employee2.empSalary<= 10000
select employee2);
Console.WriteLine("----****----");
Console.WriteLine("EmpID\tEmpName\tEmpSal\tDepartmentID");
foreach (Employee e2 in query2)
{
Console.WriteLine(e2.empId + "\t" + e2.empName + "\t" + e2.empSalary + "\t" + e2.Department.deptId + "");
}
int count;
string spec="A101";
dictionary.Add(spec, list1);
count = dictionary[spec].Count;
count = (from employee3 in dictionary[spec] where employee3.Department.deptId == 1 select employee3).Count();
//Console.WriteLine("DepartmentID\tCount");
Console.WriteLine("----****----

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900