c# SharePoint 将多个 ListItemCollection 合并为一个
c# SharePoint combine multiple ListItemCollection into one
我在 Sharepoint Online 网站上有一个包含 5000 多个项目的列表。在列表达到 5000 个项目之前,我使用以下代码片段获取所有项目:
var camlquery = new CamlQuery();
camlquery.ViewXml = @"<View Scope='RecursiveAll'>
<ViewFields>
<FieldRef Name='OppId' />
</ViewFields>
<Query>
<QueryOptions>
<ViewAttributes Scope='Recursive' />
</QueryOptions>
</Query>
</View>";
ListItemCollection listItems = _currentList.GetItems(camlquery);
_clientContext.Load(listItems, items => items.Include(item => item["OppId"], item => item.Id));
_clientContext.ExecuteQuery();
现在我遇到了这种糟糕的情况,我有超过 5000 件物品。通常这不是问题。我之前在 powershell 中通过分页结果来管理它。
在这种情况下,我使用 Microsoft.SharePoint.Client.ListItemCollection 并使用函数 GetItems(camlquery)
将项目添加到集合中。当我尝试从另一个 'page' 添加其他项目时,它似乎不起作用。
我尝试遍历项目并将它们添加到 ListItemCollection。但是没有可用的添加或插入功能。
foreach (ListItem myListItem in listItems2)
{
listItems.Add(myListItem);
}
我需要 return 一个包含 5000 多个项目的 ListItemCollection。
感谢您的帮助
将 listItems 和 listItems2 转换为 Datatable,然后将 datatable1 的行复制到 datatable2
foreach (DataRow dr in dataTable1.Rows) {
dataTable2.Rows.Add(dr);
}
我找到了一种获取所有项目的方法,方法是使用 IList<ListItem>
从 ListItemCollection
中收集类型为 ListItem
的所有对象。
IList<ListItem> listItemsAll = new List<ListItem>();
// Loop through pages of list items
//... Getting all items
foreach (ListItem myListItem in listItems)
{
listItemsAll.Add(myListItem);
}
// End Loop
return listItemsAll;
在这种情况下,我 return 一个列表,但我只需要将列表类型从 ListItemCollection
更改为 IList<ListItem>
。一切都按预期工作。
我在 Sharepoint Online 网站上有一个包含 5000 多个项目的列表。在列表达到 5000 个项目之前,我使用以下代码片段获取所有项目:
var camlquery = new CamlQuery();
camlquery.ViewXml = @"<View Scope='RecursiveAll'>
<ViewFields>
<FieldRef Name='OppId' />
</ViewFields>
<Query>
<QueryOptions>
<ViewAttributes Scope='Recursive' />
</QueryOptions>
</Query>
</View>";
ListItemCollection listItems = _currentList.GetItems(camlquery);
_clientContext.Load(listItems, items => items.Include(item => item["OppId"], item => item.Id));
_clientContext.ExecuteQuery();
现在我遇到了这种糟糕的情况,我有超过 5000 件物品。通常这不是问题。我之前在 powershell 中通过分页结果来管理它。
在这种情况下,我使用 Microsoft.SharePoint.Client.ListItemCollection 并使用函数 GetItems(camlquery)
将项目添加到集合中。当我尝试从另一个 'page' 添加其他项目时,它似乎不起作用。
我尝试遍历项目并将它们添加到 ListItemCollection。但是没有可用的添加或插入功能。
foreach (ListItem myListItem in listItems2)
{
listItems.Add(myListItem);
}
我需要 return 一个包含 5000 多个项目的 ListItemCollection。
感谢您的帮助
将 listItems 和 listItems2 转换为 Datatable,然后将 datatable1 的行复制到 datatable2
foreach (DataRow dr in dataTable1.Rows) {
dataTable2.Rows.Add(dr);
}
我找到了一种获取所有项目的方法,方法是使用 IList<ListItem>
从 ListItemCollection
中收集类型为 ListItem
的所有对象。
IList<ListItem> listItemsAll = new List<ListItem>();
// Loop through pages of list items
//... Getting all items
foreach (ListItem myListItem in listItems)
{
listItemsAll.Add(myListItem);
}
// End Loop
return listItemsAll;
在这种情况下,我 return 一个列表,但我只需要将列表类型从 ListItemCollection
更改为 IList<ListItem>
。一切都按预期工作。