【问题标题】: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);
                }
    

    【讨论】:

      猜你喜欢
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 2020-05-26
      相关资源
      最近更新 更多