Сделай это наоборот.Проверьте, содержит ли ключевое слово имя / заголовок
var keys = keywords = keywords.Split(' ');
list<employee> list = from(e in dbContext.getTable<employee>
join dbContext.GetTable<job>() on e.jobi equeals j.id
where keys.Contains(e.firstname) || keys.contains(j.title)
select e).toList();
РЕДАКТИРОВАТЬ , если вы также хотите работать с людьми с более чем одним именем, тогда:
var keys = keywords = keywords.Split(' ');
list<employee> list = from(e in dbContext.getTable<employee>
join dbContext.GetTable<job>() on e.jobi equeals j.id
where keys.Any(k=>e.firstname.Contains(k))
|| keys.Any(k=> j.title.Contains(k))
select e).toList();
однакоЯ не уверен, что это можно перевести на SQL, но так как вы не пометили свой вопрос ни linq-2-sql, ни EF, это может не быть проблемой (хотя из вашего кода может показаться, что тег EFвероятно, отсутствует)
РЕДАКТИРОВАТЬ Если вы хотите, чтобы можно было динамически строить запрос (о чем свидетельствуют ваши комментарии), я бы посоветовал вам взглянуть на Dynamic LINQ