Q:

C# program to join multiple data sources using Linq Join() method

0

C# program to join multiple data sources using Linq Join() method

All Answers

need an explanation for this answer? contact us directly to get an explanation for this answer

Program:

The source code to join multiple data sources using Linq Join() method, which is given below. The given program is compiled and executed successfully on Microsoft Visual Studio.

//C# program to join multiple data sources 
//using Linq Join() Method.

using System;
using System.Linq;
using System.Collections.Generic;

public class Employee
{
    public int ID;
    public int Salary;
    public int DEPT_ID;
    public int ADD_ID;
    public string Name;
}

public class Department
{
    public int DEPT_ID;
    public string DEPT_Name;
}

public class Address
{
    public int ADD_ID;
    public string address;
}

public class JoinDemo
{
    static void Main(string[] args)
    {

        List<Employee> employees = new List<Employee>()
        {
             new Employee {ID=101,   Name="Amit  "    , Salary=4000,DEPT_ID=101,ADD_ID=201},
             new Employee {ID=102,   Name="Amit  "    , Salary=3800,DEPT_ID=102,ADD_ID=202},
             new Employee {ID=103,   Name="Salman"    , Salary=3500,DEPT_ID=103,ADD_ID=203},
             new Employee {ID=104,   Name="Ram   "    , Salary=2000,DEPT_ID=101,ADD_ID=204},
             new Employee {ID=105,   Name="Shyam "    , Salary=7000,DEPT_ID=102,ADD_ID=205},
             new Employee {ID=106,   Name="Kishor"    , Salary=5000,DEPT_ID=103,ADD_ID=206},
        };

        List<Department> departments = new List<Department>()
        {
             new Department {DEPT_ID=101,   DEPT_Name="HR        "   },
             new Department {DEPT_ID=102,   DEPT_Name="ACCOUNTS  "   },
             new Department {DEPT_ID=103,   DEPT_Name="SALES     "   },
        };

        List<Address> addresses = new List<Address>()
        {
             new Address {ADD_ID=201,   address="AGRA      "   },
             new Address {ADD_ID=202,   address="BAMBAI    "   },
             new Address {ADD_ID=203,   address="CHENNAI   "   },
             new Address {ADD_ID=204,   address="DELHI     "   },
             new Address {ADD_ID=205,   address="GWALIOR   "   },
             new Address {ADD_ID=206,   address="JHASHI    "   },
        };


        var Result = employees.Join(departments,
                                    emp1 => emp1.DEPT_ID,
                                    dept => dept.DEPT_ID,
                                    (emp1, dept)=>new {emp1, dept}
                                    )
                              .Join(addresses,
                                    emp2 => emp2.emp1.ADD_ID,
                                    add => add.ADD_ID,
                                    (emp2, add)=>new {emp2, add}
                                    )
                              .Select(
                                        e => new 
                                        {
                                            ID = e.emp2.emp1.ID,
                                            Name = e.emp2.emp1.Name,
                                            Salary = e.emp2.emp1.Salary,
                                            DeptName = e.emp2.dept.DEPT_Name,
                                            address = e.add.address
                                        }).ToList();
                
        Console.WriteLine("Employee Details: ");
        foreach (var e in Result)
        {
            Console.WriteLine("\tID: " + e.ID + ", Name: " + e.Name + ", Salary: " + e.Salary + ", Department: " + e.DeptName+", Address: "+e.address);
        }
    }
}

Output:

Employee Details:
        ID: 101, Name: Amit  , Salary: 4000, Department: HR        , Address: AGRA
        ID: 102, Name: Amit  , Salary: 3800, Department: ACCOUNTS  , Address: BAMBAI
        ID: 103, Name: Salman, Salary: 3500, Department: SALES     , Address: CHENNAI
        ID: 104, Name: Ram   , Salary: 2000, Department: HR        , Address: DELHI
        ID: 105, Name: Shyam , Salary: 7000, Department: ACCOUNTS  , Address: GWALIOR
        ID: 106, Name: Kishor, Salary: 5000, Department: SALES     , Address: JHASHI
Press any key to continue . . .

Explanation:

In the above program, we created four classes EmployeeDepartmentAddress, and JoinDemoEmployee class contains data members IDNameSalary, and DEPT_IDDepartment class contains DEPT_ID and DEPT_Name and Address class contains ADD_ID and address.

Now look to the JoinDemo class, the JoinDemo class contains the Main() method. In the Main() method we created a list of employees, departments, and addresses.

var Result = employees.Join(departments,
        emp1 => emp1.DEPT_ID,
        dept => dept.DEPT_ID,
        (emp1, dept)=>new {emp1, dept}
        )
    .Join(addresses,
        emp2 => emp2.emp1.ADD_ID,
        add => add.ADD_ID,
        (emp2, add)=>new {emp2, add}
        )
    .Select(
            e => new 
            {
                ID = e.emp2.emp1.ID,
                Name = e.emp2.emp1.Name,
                Salary = e.emp2.emp1.Salary,
                DeptName = e.emp2.dept.DEPT_Name,
                address = e.add.address
            }).ToList();

In the above code we joined EmployeeDepartment and Address class based on DEPT_ID and ADD_ID using Join() method.

Console.WriteLine("Employee Details: ");
foreach (var e in Result)
{
    Console.WriteLine("\tID: " + e.ID + ", Name: " + e.Name + ", Salary: " + e.Salary + ", Department: " + e.DeptName+", Address: "+e.address);
}

The above code will print the result of join on the console screen.

need an explanation for this answer? contact us directly to get an explanation for this answer

total answers (1)

This question belongs to these collections

Similar questions


need a help?


find thousands of online teachers now