using System.Collections.Generic;
public static void Main()
List<Employee> employees = new List<Employee>()
FirstName = "John", LastName = "Smith", StateId = 1
FirstName = "Jane", LastName = "Doe", StateId = 2
FirstName = "Jack", LastName = "Jones", StateId = 1
FirstName = "Sue", LastName = "Smith", StateId = 3
List<State> states = new List<State>()
StateId = 1, StateName = "PA"
StateId = 2, StateName = "NJ"
join s in states on emp.StateId equals s.StateId
emp.FirstName, s.StateName
foreach (var e in empState)
Console.WriteLine("{0} {1}", e.FirstName, e.StateName);
Console.WriteLine(Environment.NewLine);
var outerJoin = from emp in employees
on emp.StateId equals s.StateId
from item in employeeGroup.DefaultIfEmpty(new State{StateId=0,StateName=""})
select new {emp.LastName,item.StateName};
foreach (var employee in outerJoin) {
Console.WriteLine(employee.LastName + ", " + employee.StateName); }