from f in CUSTOMERS
where depts.Contains(f.DEPT_ID)
select f.NAME
depts
- список (IEnumerable<int>
) идентификаторов отдела
Этот запрос работает нормально, пока вы не передадите большой список (скажем, около 3000 идентификаторов). Затем я получаю эту ошибку:
Неправильный поток протокола входящего потока табличных данных (TDS) удаленных процедур (RPC). Слишком много параметров было предоставлено в этом запросе 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()
, исправил ошибку, но сделал запрос медленным. Есть ли другой способ решить эту проблему? Большое спасибо.