from f in CUSTOMERS
where depts.Contains(f.DEPT_ID)
select f.NAME
depts
IEnumerable<int>
は部門 IDのリスト ( ) です
このクエリは、大きなリスト (たとえば、約 3000 の部門 ID) を渡すまでは正常に機能します。その後、次のエラーが発生します。
着信表形式データ ストリーム (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()
するとエラーは修正されましたが、クエリが遅くなりました。これを解決する他の方法はありますか?本当にありがとう。