[EDITED: I left the original question below, with some more context and code to reproduce the problem. The short version below contains the essence of the question]
Shor
Moving the Order By p.DateCreated
line as per my edited answer allows the query to run without any exceptions. However, the emitted SQL is different so I don't think you are getting back the correct result.
Dim qLinq = From outerOrder In orders
Let id = (From p In products
Order By p.DateCreated
Join o In orders On p.Id Equals o.ProductId
Where o.OrderDate = outerOrder.OrderDate AndAlso
outerOrder.CustomerId = o.CustomerId
Select p.Id).FirstOrDefault()
Where outerOrder.OrderDate = currentDate AndAlso
outerOrder.ProductId = id
Select outerOrder