public static void Main()
new { Name = "Vernon", Gender = "Male", CountryCode = "GB" },
new { Name = "Carrie", Gender = "Female", CountryCode = "CA" },
new { Name = "Joanna", Gender = "Female", CountryCode = "US" },
new { Name = "Thomas", Gender = "Male", CountryCode = "ES" },
new { Name = "James", Gender = "Male", CountryCode = "GB" },
new { 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 = countries.GroupJoin(people,
(c, p) => new {Country = c, People = p})
.SelectMany(arg => arg.People.DefaultIfEmpty(),
(c, p) => new {c.Country, People = p});
foreach (var g in results)
Console.WriteLine("{0} - {1}", g.Country.CountryName, g.People == null ? "NULL" : g.People.Name);