我的 LINQ 查询返回以下错误:“传入的表格数据流 (TDS) 远程过程调用 (RPC) 协议流不正确。此 RPC 请求中提供了太多参数。最大值为 2100”。
我所需要的只是计算所有具有 BirthDate 且我在列表中有其 ID 的客户。我的客户 ID 列表可能很大(数百万条记录)。
这是查询:
List<int> allClients = GetClientIDs();
int total = context.Clients.Where(x => allClients.Contains(x.ClientID) && x.BirthDate != null).Count();
当查询以这种方式重写时,
int total = context
.Clients
.Count(x => allClients.Contains(x.ClientID) && x.BirthDate != null);
它会导致同样的错误。
还尝试以不同的方式制作它,它会吃掉所有的记忆:
List<int> allClients = GetClientIDs();
total = (from x in allClients.AsQueryable()
join y in context.Clients
on x equals y.ClientID
where y.BirthDate != null
select x).Count();