using System.Collections.Generic;
public static void Main()
var employees = new List<Employee>
new Employee { Id =1, Name = "foo", DeptId = 1001 },
new Employee { Id =2, Name = "bar", DeptId = 1000 },
new Employee { Id =3, Name = "xyz", DeptId = 1002 }
var departments = new List<Department>
new Department { Id = 1000, Name = "HR" },
new Department { Id = 1001, Name = "IT" },
new Department { Id = 1002, Name = "R&D" },
new Department { Id = 1003, Name = "Finance" },
new Department { Id = 1004, Name = "Production" },
var result = from d in departments
on d.Id equals e.DeptId into es
from x in es.DefaultIfEmpty()
select new Department { Id = d.Id, Name = d.Name};
foreach (var item in result)
Console.WriteLine("Department Id: {0}",item.Id);
Console.WriteLine("Name: {0}",item.Name);
public int Id { get; set; }
public string Name { get; set; }
public int DeptId { get; set; }
public int Id { get; set; }
public string Name { get; set; }