我正在使用IPP .Net Dev Kit的2.1.12.0版本,并且遇到问题,当我使用ExecuteQuery返回QBD实例的所有客户列表时,它只会返回前500个。
在IPP文档中,它讨论了使用ChunkSize和StartPage,但.net库只允许您指定ChunkSize。
使用此版本的.net库时,有没有办法让ExecuteQuery返回超过500条记录?
var cq = new CustomerQuery() { ActiveOnly = true };
var results = cq.ExecuteQuery<Ipp.Customer>(context);
// results will never contain more than 500.
答案 0 :(得分:0)
我找到了问题的解决方案,IPP .net SDK可以让你指定IteratorId。事实证明,CustomerQuery / QueryBase上的Item属性表示IteratorId XML字段。如果未指定Item / IteratorId,则调用ExecuteQuery将始终返回前500个结果。
下面的工作代码示例:
var cq = new CustomerQuery() { ActiveOnly = true };
// this fills in the IteratorId that is documented on the IPP website
// if you leave this out, the loop below will run infinitely if there
// are >= 500 records returned.
cq.Item = Guid.NewGuid().ToString("N");
ReadOnlyCollection<Ipp.Customer> cqr = null;
do
{
cqr = cq.ExecuteQuery<Ipp.Customer>(context);
// do something with the results returned here.
}
while (cqr.Count == 500);