var expr =
  from c in customers
  join o in (
        from c in customers
            from o in c.Orders
            join p in products
                on o.IdProduct equals p.IdProduct
            select new { c.Name, o.IdProduct, o.Month,
                      OrderAmount = o.Quantity * p.Price }
        ) on c.Name equals o.Name into orders
  select new { c.Name,
              MaxOrder =
                  orders
                  .Aggregate( new { Amount = 0m, Month = String.Empty },
                              (a, s) => a.Amount > s.OrderAmount
                                    ? a
                                    : new { Amount = s.OrderAmount,
                                        Month = s.Month })};
