У меня была очень похожая проблема, и я не мог использовать внешние ключи.
Мое решение будет выглядеть примерно так:
results = results
.Join(dc.CompanyIndustry, c => c.CompanyID, ci => ci.CompanyID, (c, ci) => new { c, ci.IndustryID })
.Where (a => a.IndustryID == ddlIndustry.SelectedValue)
.Select(a => a.c);
В основном:
1) сначала мы создаем объединение с проекцией, которая дает нам IndustryID (объединение)
2) мы фильтруем на основе IndustryID (где)
3) мы возвращаем исходный анонимный тип, чтобы мы могли изменить исходный запрос (выбрать)