from f in CUSTOMERS
where depts.Contains(f.DEPT_ID)
select f.NAME
Run Code Online (Sandbox Code Playgroud)
depts是IEnumerable<int>部门ID 的列表()
这个查询工作正常,直到你传递一个大的列表(比如大约3000 dept ids)..然后我得到这个错误:
传入的表格数据流(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
Run Code Online (Sandbox Code Playgroud)
使用IndexOf()修复错误但使查询变慢.有没有其他方法可以解决这个问题?非常感谢.
在我正在进行的项目中,我需要以下列方式访问LINQ中的2个数据库:
我得到了DB1指定日期范围之间所有旅行号码的列表,并将其存储为"长"值列表
我在DB2上执行了大量连接的大量查询,但只查看了上面列表中包含其行程编号的行程.
问题是,来自DB1的行程列表经常返回超过2100项 - 我当然在SQL中达到2100参数限制,这导致我的第二个查询失败.我一直在寻找解决这个问题的方法,例如此处所描述的,但是这实际上将我的查询更改为LINQ-to-Objects,这会导致我的连接出现很多问题
我还能做其他解决方法吗?
c# ×2
linq ×2
.net ×1
ado.net ×1
asp.net ×1
limit ×1
linq-to-sql ×1
parameters ×1
sql ×1
sql-server ×1