Ну, вы можете попробовать :
var qq = from s in db.tblSpecifications
where q.Select(x => x.SpecID).Contains(s.id)
select s;
Другими словами, спроецируйте результат перед использованием Contains
.Я понятия не имею, как будет выглядеть SQL.
Кстати, я бы лично написал это так:
var qq = db.tblSpecifications
.Where(s => q.Select(x => x.SpecID).Contains(s.id));
Я использую синтаксис выражения запроса только там, где он действительновсе проще.Я также настоятельно рекомендую вам использовать несколько строк для запросов - это действительно может помочь с удобочитаемостью.