Это потому, что вы выбираете два разных набора данных, а Linq не может понять, что вы пытаетесь сделать.
вместо .... выберите q и .... выберите qp
var qryQuestions = (from q in db.table1
where q.ID == ID && q.categoryID == categoryID
select new {questionOrder= q.questionOrder, value2 = q.Value2})
.Union
(from qp in db.table2
where qp.ID == ID && qp.categoryID == categoryID
select new {questionOrder= qp.questionOrder, value2 = qp.Value2}))
.OrderBy(x => x.questionOrder);
Причина этого заключается в том, что вы пытаетесь выделить целые разные сущности - т.е. q! = Qp, поскольку они не из одной таблицы.