2017-01-17 10 views
0

私はSharepoint Online Siteに5000を超える項目を持つリストを持っています。リストには、5000の項目に達した前に、私はすべての項目を取得するには、次のスニペットを使用しました: c#複数のListItemCollectionを1つにまとめる

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

5000個以上のアイテムを含む1つのListItemCollectionを返す必要があります。

答えて

0

にdatatable1の行をコピーします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; 

私はリストを返すが、私は唯一のListItemCollectionからIList<ListItem>にリストの種類を変更する必要がありました。すべてが期待どおりに動作します。

0

を支援するためのおかげでDATATABLEへのlistItemsとlistItems2を変換してからは、私はIList<ListItem>を使用して、すべてのアイテムを取得する方法を見つけたdatatable2

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

}

関連する問題