public List<Customer> CustomerList;
StringBuilder sbResult = new StringBuilder();
// Define default order instance
Order emptyOrder = new Order { OrderID = 0, CustomerID = "XXXXX", EmployeeID = 0,
OrderDate = DateTime.Parse("1/1/1900"),
RequiredDate = DateTime.Parse("1/1/1900"),
ShipVia = 0,
Freight = 0M,
ShipName = "Default Order" };
var query11 = from c in CustomerList
where c.Country == "USA"
join o in OrderList
on c.CustomerID equals o.CustomerID into co
from d in co.DefaultIfEmpty(emptyOrder)
select new { c, d };
foreach (var c in query11)
sbResult.Append(String.Format("CustID = {0}, Name = {1}, OrderID = {2}, OrderDate = {3:d}\r\n",
c.c.CustomerID, c.c.CompanyName, c.d.OrderID, c.d.OrderDate));