我們有一個包含50.000項的SharePoint列表,並希望從中獲取一些數據而不禁用SP2010的默認限制。如何從啓用了Throttling的大型列表中獲取?
從MSDN處理大型列表的文章中,我們發現關鍵要素是在SPQuery上使用一個小的RowLimit,並使用ListItemCollectionPosition進行批處理。
然而,我們的代碼(東西)這樣,節流例外同樣會被觸發:
SPQuery query = new SPQuery();
query.Query = "<Where><Contains><FieldRef Name=\"MatterName\" /><Value Type=\"Text\">7476922</Value></Contains></Where>";
query.ViewFields = "<FieldRef Name=\"MatterName\"/>";
query.RowLimit = 10;
int index = 0;
do
{
SPListItemCollection batch = mattersList.GetItems(query);
query.ListItemCollectionPosition = batch.ListItemCollectionPosition;
}
while (query.ListItemCollectionPosition != null);
據當時的SharePoint連接2010的MVP專家介紹,這是設計,作爲隱含排序在結果集上仍然會觸發5000個項目的限制閾值。
哪個不錯,所有,但是然後如何我們從這個列表中獲取?會使用ContentIterator是更好的選擇嗎?如果是這樣,內容迭代器將實現這種功能的神奇功能是什麼?