Basically I have a QueryExpression that returns over 3000 results. I only need to use between 50 and 200 of these. If I was using normal sql I could use SELECT TOP 200..... Is there a way to do this in CRM using the QueryExpression or FetchXML?


In a QueryExpression:

QueryExpression query = new QueryExpression(); 
query.PageInfo = new PagingInfo();
query.PageInfo.Count = 200; // or 50, or whatever
query.PageInfo.PageNumber = 1;

In Fetch XML:

<fetch mapping='logical' page='1' count='200'>
  • This is still the same (just made use of the FetchXML part) in CRM 2013 too – Alex Apr 7 '15 at 9:28
  • I think, what is needed is, instead, TopCount property of QueryExpression – hdoghmen Aug 28 '19 at 15:09

@Matt basically said everything right. This article expands on his answer.

What you essentially want to do is use PageInfo prop of QueryExpression. That way you can limit the results, or, even better fetch more than 5000 rows (default limit). PageInfo is used as a paging indicator. How many rows does a page have, how many pages and most important, PagingCookie used for recursive read of more data (more than 5k rows) https://msdn.microsoft.com/en-us/library/mt269606.aspx

Your Answer

