public static void Main()
Name = "Vernon", Gender = "Male", CountryCode = "GB",
Name = "Carrie", Gender = "Female", CountryCode = "CA"
Name = "Joanna", Gender = "Female", CountryCode = "US"
Name = "Thomas", Gender = "Male", CountryCode = "ES"
Name = "James", Gender = "Male", CountryCode = "GB"
Name = "Elly", Gender = "Female", CountryCode = "US"
new {CountryName = "United Kingdom", Code = "GB"},
new {CountryName = "United States", Code = "US"},
new {CountryName = "Canada", Code = "CA"},
new {CountryName = "France", Code = "FR"},
new {CountryName = "Spain", Code = "ES"}
var results = from c in countries
on c.Code equals p.CountryCode into g
from pg in g.DefaultIfEmpty()
select new {Country = c, People = pg};
foreach (var g in results)
Console.WriteLine("{0} - {1}", g.Country.CountryName, g.People == null ? "NULL" : g.People.Name);