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 theAnonymous
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 ThanksAnonymous
October 20, 2010
Thanks buddy you made my day. -Regards NG