using System.Collections;
using System.Collections.Generic;
public static void Main()
Employee.getAllEmployee()
.GroupJoin(Address.getAllAddress(),
Employee=>Employee.AddressId,
Address=>Address.AddressID,
(Employee,Address)=> new {Employee,Address}
.SelectMany(x=>x.Address.DefaultIfEmpty(),
public string name {get;set;}
public int AddressId {get;set;}
public static List<Employee> getAllEmployee(){
return new List<Employee>(){
new Employee {id=1,name="e1",AddressId=1},
new Employee {id=2,name="e2",AddressId=2},
new Employee {id=3,name="e3",AddressId=1},
new Employee {id=4,name="e4",AddressId=3},
new Employee {id=5,name="e5",AddressId=5},
public int AddressID {get;set;}
public string AddresName {get;set;}
public static List<Address> getAllAddress(){
return new List<Address>{
new Address{AddressID=1,AddresName="address1"},
new Address{AddressID=3,AddresName="address3"},
new Address{AddressID=2,AddresName="address2"},
new Address{AddressID=4,AddresName="address4"}