A consulta Linq incorporada no loop foreach sempre leva o valor do parâmetro da última iteração
Eu tenho uma lista contendo várias palavras-chave. Eu foreach através deles construindo minha consulta linq com eles da seguinte forma (resumidos para remover o ruído do código):
List<string> keys = FillKeys()
foreach (string key in keys){
q = q.Where(c => c.Company.Name.Contains(key));
}
Quando agora faço minhas chaves conterem 2 chaves que retornam resultados separadamente, mas nunca podem ocorrer juntas (todo item em q é "xyz" ou "123", nunca "123" AND "xyz"), ainda recebo resultados. O conjunto de resultados é o mesmo que a última sequência que chegou.
Eu dei uma olhada na consulta linq e parece que ela cria o sql correto, mas substitui @ p1 AND @ p2, ambos pelo mesmo valor (última iteração).
O que estou fazendo errado?