2013-08-17 65 views
0

我有一個Sharepoint 2010列表,我使用System.Data.Services.Client.DataServiceQuery將列表獲取到C#列表中。但是,當我列舉整個列表時,我只限於1000個項目。DataServiceQuery來自Sharepoint的IEnumerator僅返回1000個項目

我做了一些研究,發現活動目錄的默認限制這個數字爲1000,所以它是有道理的,它也會在Sharepoint中受到限制,但我想增加這個數字。

任何人都可以提供一些步驟來查找Sharepoint中的MaxPageSize,或者它的位置,以便我可以在我的C#程序中找回1000多個項目?

+0

考慮使用搜索 - http://www.bing.com/search?q=sharepoint+list+item+limit發現描述的限制條款,方式調整他們和適當的方式來處理列表。 –

+0

欣賞這個建議,但是這些討論了Sharepoint列表中的限制。我已經在一個sharepointlist中有超過1000個項目。我正在尋找一種在C#中使用DataServiceQuery獲取超過1000個SharePoint列表的方法。 – Tizz

+0

嘗試調整每個限制,並查看'DataServiceQuery'是否遵守限制(我不確定它是否使用任何或僅硬編碼爲1000)。這些限制會影響SP在單個查詢中返回的API數量,在此之後,您需要使用分頁(即,某些API返回您需要傳遞給下一個呼叫的API以便下一批次返回) –

回答

0

存在的問題,從分頁

卡梅斯

現在取決於你如何配置服務,您可能不會收到所有行。在我們的例子中,我們只有1000.這意味着該服務僅配置爲每個查詢返回最多1000個。要解決此問題,必須分頁您的要求:

var projects = from project in dc.ITProjects 
        orderby project.Id 
        select new 
        { 
         Phase = project.Phase.Value, 
         ProjectName = project.Project 
        } 
        ; 

    int recordCount = projects.Count(); 
    int page = 0; 
    int pageSize = 100; 

    while(page*pageSize < recordCount) 
    { 
     foreach (var project in projects.Skip(page * pageSize).Take(pageSize)) 
     { 
      Output0Buffer.AddRow(); 
      Output0Buffer.C1 = project.Phase; 
      Output0Buffer.C2 = project.ProjectName; 
     } 
     page++; 
    } 
相關問題