LINQ to Objects - отличный клей:
var entityX = this._xService.GetAll();
var entityY = this._yService.GetAll();
var joinedSequence = from x in entityX
join y in entityY on x.Key equals y.Key
select new { x, y };
var joinedQueryable = joinedSequence.AsQueryable();
На самом деле не нужно последний шаг;IQueryable<T>
не требуется, поскольку LINQ to Objects прекрасно работает с IEnumerable<T>
.