Partilhar via


C# 3.0 : Joining two in-memory collection through LINQ

LINQ allows us to join different collection source provided we are mapping with two properties with the same type. It is easy, it is quick and it is concise.

 

 

//Create Employee Class

class Employee

{

    public int ID { get; set; }

    public string Name { get; set; }

   public string ManagerId { get; set; }

}

//Create Manager Class

class Manager

{

    public string Id { get; set; }

    public string Name { get; set; }

}

class Program

{

    //Create the List<Manager>

    static List<Manager> GetManagers()

    {

        return new List<Manager>

        {

            new Manager(){Id = "M1", Name = "Manager 1"},

            new Manager(){Id = "M2", Name = "Manager 2"}

        };

    }

    //Create the List<Employee>

    static List<Employee> GetEmployees()

    {

        return new List<Employee>

        {

            new Employee(){ID = 1, Name = "A", ManagerId = "M1"},

            new Employee(){ID = 2, Name = "B", ManagerId = "M1"},

            new Employee(){ID = 3, Name = "C", ManagerId = "M1"},

            new Employee(){ID = 4, Name = "D", ManagerId = "M1"},

            new Employee(){ID = 5, Name = "E", ManagerId = "M2"},

            new Employee(){ID = 6, Name = "F", ManagerId = "M2"},

            new Employee(){ID = 7, Name = "G", ManagerId = "M2"},

            new Employee(){ID = 9, Name = "H", ManagerId = "M5"}

        };

    }

    static void Main(string[] args)

    {

        /*Doing join between two sources

         *The record will be retieved only the mathched data

             * Output will give values from both the collection

             */

            var query = from e in GetEmployees()

                        join m in GetManagers() on e.ManagerId equals m.Id

                        select new

                        {

                            EmployeeId = e.ID,

                            EmployeeName = e.Name,

                            Manager = m.Name

                        };

            foreach (var o in query)

            {

                Console.WriteLine("{0}-{1} [{2}]",

               o.EmployeeId,

                    o.EmployeeName,

                    o.Manager);

            }

        }

    }

 

Namoskar!!!

Comments

  • Anonymous
    December 14, 2007
    LINQ allows us to join different collection source provided we are mapping with two properties with the

  • Anonymous
    July 17, 2008
    Very good my brother. Tanks.

  • Anonymous
    October 10, 2010
    Very simple and easy to unerstand, This solved my linq joining tables problem Thanks

  • Anonymous
    October 20, 2010
    Thanks buddy you made my day. -Regards NG