I usually solve this by creating two statements: one in LinqToEntities (or ToSql or something else), and then the other in LinqToObjects. I do what I need to do in the store, and then I do a separate processing step with objects in memory. It mixes the best of both worlds.
var EmployeeXPosition = from emp in context.WTDEmployee
from ep in emp.WTDEmployeeXOXPosition
select new {
emp.id,
emp.FirstName,
emp.LastName,
ep.WTDPosition.Position
};
var result = from item in EmployeeXPosition.ToList()
select new
{
EmployeeId = item.id,
FullNameAndPosition = string.Format("{0} {1} : {2}", item.FirstName, item.LastName, item.Position)
};