【问题标题】:The incoming tabular data stream remote procedure call protocol stream is incorrect. Too many parameters were provided in this RPC request传入的表格数据流远程过程调用协议流不正确。此 RPC 请求中提供的参数过多
【发布时间】:2013-11-21 16:22:18
【问题描述】:
我遇到了一个错误:
传入的表格数据流 (TDS) 远程过程调用 (RPC) 协议流不正确。此 RPC 请求中提供的参数过多。最大值为 2100。
我已经完成了一些即将到来的代码。代码如下。
var statements = session.Query<TBAStatementBankAccount>().Where(x => x.TBABankAccount == bankAccount).ToList().Select(x => x.TBAStatement).ToList();
var lstStatement = session.Query<TBAStatement>().Where(x => statements.Contains(x) && x.FDate < CutOffDate).ToList();
var lstDate = lstStatement.OrderByDescending(x => x.FDate).ToList();
当我调试代码 var 语句时检索大约 8000 条记录。我的问题是如何在 lambda 表达式中使用 In(Contains) 方法。我被这个问题困住了。
【问题讨论】:
标签:
c#
linq
sql-server-2008
【解决方案1】:
我已经为上述问题实现了一些代码,它在我的最后工作正常。代码如下。
var statements = session.Query<TBAStatementBankAccount>().Where(x => x.TBABankAccount == bankAccount).ToList().Select(x => x.TBAStatement).ToList();
var sublists = statements
.Select((x, i) => new { Index = i, Value = x })
.GroupBy(x => x.Index / 2000)
.Select(x => x.Select(v => v.Value).ToList())
.ToArray();
List<TBAStatement> lstNewstatement = new List<TBAStatement>();
foreach (var statemnt in sublists)
{
var state = session.Query<TBAStatement>().Where(x => statemnt.Contains(x) && x.FDate < CutOffDate).ToList();
lstNewstatement.AddRange(state);
}