2017-01-17 3 views
0

У меня есть список с более чем 5000 наименований на сайте Sharepoint Online. Перед тем как список достиг 5000 пунктов, я использовал следующий фрагмент кода, чтобы получить все элементы: C# SharePoint объединить несколько ListItemCollection в один

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). Когда я пытаюсь добавить дополнительные элементы с другой страницы, это, похоже, не сработает.

Я попытался пропустить элементы и добавить их в ListItemCollection. Но нет функции добавления или вставки.

foreach (ListItem myListItem in listItems2) 
{ 
    listItems.Add(myListItem);   
} 

Мне нужно вернуть один экземпляр ListItemCollection с более чем 5000 элементами.

Спасибо за помощь

ответ

0

Я нашел способ, чтобы получить все элементы с помощью IList<ListItem> для сбора всех объектов типа ListItem от ListItemCollection.

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; 

В этом случае я возвращаю список, но я только нужно изменить тип списка из ListItemCollection в IList<ListItem>. Все работает так, как ожидалось.

0

Преобразование ListItems и listItems2 в Datatable, а затем скопировать строки datatable1 в datatable2

foreach (DataRow dr in dataTable1.Rows) { 
    dataTable2.Rows.Add(dr); 

}