Ok, thanks for the response.
Here is a workaround for me (as I don't require any aggregate functions on the groups).
var orderDetailProductCategory = from orderDetail in this._linqMetaData.OrderDetails
select new { orderDetail.OrderId, orderDetail.Product.ProductCategoryId}
var test = from odpc in orderDetailProductCategory.Distinct()
join productCategory in this._linqMetaData.ProductCategory on odpc.ProductId equals productCategory.ProductCategoryId
join order in this._linqMetaData.Orders on odpc.OrderId equals order.OrderId
select new {order.foo, productCategory.bar}
Hope this helps someone. Thanks again.