【问题标题】:C# sharepoint List Item CollectionC# sharepoint 列表项集合
【发布时间】:2018-08-15 05:25:01
【问题描述】:

问题。我有这个返回类型为“列表项集合”的方法,我在 SharePoint 中的列表包含 5000 多个项目。为了克服阈值,我需要通过设置行限制来批量获取项目,但我不知道该放什么来代替??因此返回类型也是“ListItemCollection”(SharePoint 客户端上下文)。请帮忙

private static ListItemCollection GetItemsFromSharePointSiteList(string strListName, string strCamlQuery, ClientContext clientContext)
{
    try
    {               
        ListItemCollectionPosition itemPosition = null;

        List listIPPMilestonesLE = clientContext.Web.Lists.GetByTitle(strListName);
        CamlQuery query = new CamlQuery();
        query.ViewXml = strCamlQuery;
        query.DatesInUtc = false;

        //  ListItemCollection itemColl = new ListItemCollection();

        do
        {
            Microsoft.SharePoint.Client.ListItemCollection listItemCollection = listIPPMilestonesLE.GetItems(query);
            clientContext.Load(listItemCollection);
            clientContext.ExecuteQuery();

            foreach (ListItem oListItem in listItemCollection)
            {
                 ??
            }

            itemPosition = listItemCollection.ListItemCollectionPosition;

        } while (itemPosition != null);

        return null;
    }
    catch (Exception exc)
    {
        ErrorLog.Error(exc);
    }

    return null;
}

【问题讨论】:

    标签: c# list sharepoint threshold


    【解决方案1】:

    我按照下面的方法做了,希望这是一种解决方法,对你有帮助

    private static List<ListItem> GetItemsFromSharePointSiteList(string strListName, string strCamlQuery, ClientContext clientContext)
        {
            try
            {
                ListItemCollectionPosition itemPosition = null;
    
                List listIPPMilestonesLE = clientContext.Web.Lists.GetByTitle(strListName);
                CamlQuery query = new CamlQuery();
                query.ViewXml = strCamlQuery;
                query.DatesInUtc = false;
    
                var itemColl = new List<ListItem>();
    
                do
                {
                    Microsoft.SharePoint.Client.ListItemCollection listItemCollection = listIPPMilestonesLE.GetItems(query);
                    clientContext.Load(listItemCollection);
                    clientContext.ExecuteQuery();
    
                    //
                    itemColl.AddRange(listItemCollection);
    
                    itemPosition = listItemCollection.ListItemCollectionPosition;
    
                } while (itemPosition != null);
    
                return itemColl;
            }
            catch (Exception exc)
            {
                ErrorLog.Error(exc);
            }
    
            return null;
        }
    

    【讨论】:

      【解决方案2】:

      您可以在 caml 查询中设置 rowlimit。

      例如:

      CamlQuery query = new CamlQuery();
                      query.ViewXml = "<View><Query><Where><Geq><FieldRef Name='ID'/>" +
                       "<Value Type='Number'>1</Value></Geq></Where></Query><RowLimit>100</RowLimit><ViewFields><FieldRef Name='ID'/><FieldRef Name='Title'/></ViewFields></View>";
      

      然后,使用 ListItemCollectionPosition 属性进行分页。

      检查这个sample

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-02
        • 1970-01-01
        • 2016-04-03
        • 1970-01-01
        • 2016-10-13
        • 1970-01-01
        • 2011-01-19
        相关资源
        最近更新 更多