传入的表格数据流远程过程调用协议流不正确。此RPC请求中提供的参数太多

时间:2013-11-21 16:22:18

标签: c# linq sql-server-2008

我遇到的错误是:

  

传入的表格数据流(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)方法。我陷入了这个问题。

1 个答案:

答案 0 :(得分:3)

我已经为上述问题实现了一些代码,并且它在我的最终工作正常。代码如下所示。

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);
            }