繁体   English   中英

C#共享点列表项集合

[英]C# sharepoint List Item Collection

没错 我的返回类型为“列表项集合”,并且在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;
}

我的操作如下,希望这是一种解决方法,对您有所帮助

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;
    }

您可以在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属性进行分页。

检查此样本

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM