Atingir o limite de 2100 parâmetros (SQL Server) ao usar Contains ()
from f in CUSTOMERS
where depts.Contains(f.DEPT_ID)
select f.NAME
depts
é uma lista IEnumerable<int>
) dos IDs de departamento
Esta consulta funciona bem até você passar uma lista grande (digamos cerca de 3000 IDs de departamento) .. então eu recebo este erro:
O fluxo do protocolo RPC (Chamada de Procedimento Remoto) do fluxo de dados tabulares de entrada (TDS) está incorreto. Muitos parâmetros foram fornecidos nesta solicitação de RPC. O máximo é 2100.
Alterei minha consulta para:
var dept_ids = string.Join(" ", depts.ToStringArray());
from f in CUSTOMERS
where dept_ids.IndexOf(Convert.ToString(f.DEPT_id)) != -1
select f.NAME
usingIndexOf()
corrigiu o erro, mas tornou a consulta lenta. Existe alguma outra maneira de resolver isso? Muito obrigado