我遇到的错误是:
传入的表格数据流(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)方法。我陷入了这个问题。
答案 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);
}