Примерно так:
from catalogueItem in CI
from keyword in KW
where catalogueItem.Keywords.Contains(keyword)
select catalogueItem
РЕДАКТИРОВАТЬ: чтобы KW не рассчитывался каждый раз, попробуйте сделать это:
var keywords = KW.ToList()
from catalogueItem in CI
from keyword in keywords
where catalogueItem.Keywords.Contains(keyword)
select catalogueItem
В противном случае мне нужно будет увидетьзапрос в KW и всей вашей базе данных, чтобы узнать, как оптимизировать запрос.
Другой вариант - просто написать хранимую процедуру и сопоставить ее с Entity Framework.