fetchxml分页和QueryExpression分页

本文介绍了在CRM系统中如何使用fetchxml和QueryExpression进行数据分页查询。通过示例代码展示了如何设置分页参数,以及在查询过程中如何处理分页cookie,确保数据的正确分页加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/// <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);
        }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值