QueryExpression查找结果分页
RetrieveMultiple()
查询Entity Recoed写法:
QueryExpression queryExpression = new QueryExpression("account");
queryExpression.ColumnSet = new ColumnSet(true);
EntityCollection WordOrderList = service.RetrieveMultiple(queryExpression );
如果用RetrieveMultiple()的话,Recoed >5000,就不会显示 5000之后的,所以查找的记录大于5000条的时候,需要分页。正确的做法可以参考如下代码:
QueryExpression queryExpression = new QueryExpression("account");
queryExpression.ColumnSet = new ColumnSet(true);
//EntityCollection WordOrderList = service.RetrieveMultiple(queryExpression );
EntityCollection WordOrderList = RetrieveAll(orgService, queryExpression);
///
/// 根据QueryExpression查询所有记录(多页)
///
///
///
/// EntityCollection(nullable)
public static EntityCollection RetrieveAll(IOrganizationService service, QueryExpression query)
{
EntityCollection result = new EntityCollection();
int pageNum = 1;
int pageSize = 5000;
while (true)
{
query.PageInfo = new PagingInfo
{
Count = pageSize,
PageNumber = pageNum,
PagingCookie = pageNum == 1 ? null : result.PagingCookie
};
pageNum++;
EntityCollection pageResult = service.RetrieveMultiple(query);
result.Entities.AddRange(pageResult.Entities);
result.PagingCookie = pageResult.PagingCookie;
//没有更多记录就跳出循环
if (!pageResult.MoreRecords)
{
break;
}
}
return result.Entities.Count == 0 ? null : result;
}