from f in CUSTOMERS
where depts.Contains(f.DEPT_ID)
select f.NAME
depts
- список (IEnumerable<int>
) идентификаторов отделов
Этот запрос работает нормально, пока вы не передадите большой список (скажем, около 3000 идентификаторов отделов) .. тогда я получаю эту ошибку:
Неверный поток протокола RPC для входящего потока табличных данных (TDS). Слишком много параметров было предоставлено в этом запросе RPC. Максимум 2100.
Я изменил свой запрос на:
var dept_ids = string.Join(" ", depts.ToStringArray());
from f in CUSTOMERS
where dept_ids.IndexOf(Convert.ToString(f.DEPT_id)) != -1
select f.NAME
использование IndexOf()
исправило ошибку, но сделало запрос медленным. Есть ли другой способ решить эту проблему? Большое спасибо.