/// <summary>
/// fetchxml分页
/// </summary>
public void QueryXmlPage(IOrganizationService service,string fetchxml,Action<EntityCollection> addAction)
{
int fetchCount = 5000;
int pageNumber = 1;
string pagingCookie = null;
EntityCollection ec = null;
do
{
string xml = CreateXml(fetchxml, pagingCookie, pageNumber, fetchCount);
ec = service.RetrieveMultiple(new FetchExpression(xml));
if (ec != null && ec.Entities.Count > 0)
{
addAction(ec);
pageNumber = pageNumber + 1;
pagingCookie = ec.PagingCookie;
}
} while (ec != null && ec.MoreRecords);
}
private string CreateXml(string xml, string cookie, int page, int count)
{
System.IO.StringReader stringReader = new System.IO.StringReader(xml);
XmlTextReader reader = new XmlTextReader(stringReader);
XmlDocument doc = new XmlDocument();
doc.Load(reader);
return CreateXml(doc, cookie, page, count);
}
private string CreateXml(XmlDocument doc, string cookie, int page, int count)
{
XmlAttributeCollection attrs = doc.DocumentElement.Attributes;
if (cookie != null)
{
XmlAttribute pagingAttr = doc.CreateAttribute("paging-cookie");
pagingAttr.Value = cookie;
attrs.Append(pagingAttr);
}
XmlAttribute pageAttr = doc.CreateAttribute("page");
pageAttr.Value = System.Convert.ToString(page);
attrs.Append(pageAttr);
XmlAttribute countAttr = doc.CreateAttribute("count");
countAttr.Value = System.Convert.ToString(count);
attrs.Append(countAttr);
System.Text.StringBuilder sb = new System.Text.StringBuilder(1024);
System.IO.StringWriter stringWriter = new System.IO.StringWriter(sb);
XmlTextWriter writer = new XmlTextWriter(stringWriter);
doc.WriteTo(writer);
writer.Close();
return sb.ToString();
}
/// <summary>
/// QueryExpression分页
/// </summary>
public void QueryPage(IOrganizationService service, QueryExpression query,Action<EntityCollection> addAction)
{
EntityCollection ec = null;
int pageNumber = 1;
do
{
query.PageInfo = new PagingInfo();
query.PageInfo.Count = 5000;
query.PageInfo.PagingCookie =
(pageNumber == 1) ? null : ec.PagingCookie;
query.PageInfo.PageNumber = pageNumber++;
ec = service.RetrieveMultiple(query);
if (ec != null && ec.Entities.Count > 0)
{
addAction(ec);
}
} while (ec != null && ec.MoreRecords);
}
/// fetchxml分页
/// </summary>
public void QueryXmlPage(IOrganizationService service,string fetchxml,Action<EntityCollection> addAction)
{
int fetchCount = 5000;
int pageNumber = 1;
string pagingCookie = null;
EntityCollection ec = null;
do
{
string xml = CreateXml(fetchxml, pagingCookie, pageNumber, fetchCount);
ec = service.RetrieveMultiple(new FetchExpression(xml));
if (ec != null && ec.Entities.Count > 0)
{
addAction(ec);
pageNumber = pageNumber + 1;
pagingCookie = ec.PagingCookie;
}
} while (ec != null && ec.MoreRecords);
}
private string CreateXml(string xml, string cookie, int page, int count)
{
System.IO.StringReader stringReader = new System.IO.StringReader(xml);
XmlTextReader reader = new XmlTextReader(stringReader);
XmlDocument doc = new XmlDocument();
doc.Load(reader);
return CreateXml(doc, cookie, page, count);
}
private string CreateXml(XmlDocument doc, string cookie, int page, int count)
{
XmlAttributeCollection attrs = doc.DocumentElement.Attributes;
if (cookie != null)
{
XmlAttribute pagingAttr = doc.CreateAttribute("paging-cookie");
pagingAttr.Value = cookie;
attrs.Append(pagingAttr);
}
XmlAttribute pageAttr = doc.CreateAttribute("page");
pageAttr.Value = System.Convert.ToString(page);
attrs.Append(pageAttr);
XmlAttribute countAttr = doc.CreateAttribute("count");
countAttr.Value = System.Convert.ToString(count);
attrs.Append(countAttr);
System.Text.StringBuilder sb = new System.Text.StringBuilder(1024);
System.IO.StringWriter stringWriter = new System.IO.StringWriter(sb);
XmlTextWriter writer = new XmlTextWriter(stringWriter);
doc.WriteTo(writer);
writer.Close();
return sb.ToString();
}
/// <summary>
/// QueryExpression分页
/// </summary>
public void QueryPage(IOrganizationService service, QueryExpression query,Action<EntityCollection> addAction)
{
EntityCollection ec = null;
int pageNumber = 1;
do
{
query.PageInfo = new PagingInfo();
query.PageInfo.Count = 5000;
query.PageInfo.PagingCookie =
(pageNumber == 1) ? null : ec.PagingCookie;
query.PageInfo.PageNumber = pageNumber++;
ec = service.RetrieveMultiple(query);
if (ec != null && ec.Entities.Count > 0)
{
addAction(ec);
}
} while (ec != null && ec.MoreRecords);
}