2012-07-10 44 views
1

我需要從相反的順序(從最後一個項目到第一個)從列表中提取項目。我已經設法得到所有的項目,但從第一個到最後一個。以下是我使用的代碼的一部分:反轉SPlist

該列表位於不同的網站集上。

 using (SPSite oSite = new SPSite("urltolist")) 
     { 

      using (SPWeb oWeb = oSite.RootWeb) 
      { 
       SPList FItem = oWeb.Lists["List"]; 



       foreach (SPListItem item in FItem.Items)    
       { 
       //Display entries 
       } 
      } 
     } 

回答

2

在這種情況下,您不需要處理RootWeb。

using(var site = new SPSite("urltolist")) 
{ 
    var list = site.RootWeb.Lists["List"]; 
    foreach(var li in list.Items.Cast<SPListItem>().Reverse().ToList()) 
    { 
     // Display entries 
    } 
} 
+0

'RootWeb'上的好主意。但爲什麼'ToList'? – Rawling 2012-07-10 10:09:08

+1

你不需要ToList()。我有時只是添加它來明確強迫Linq表達式進行評估的地方。 – 2012-07-10 10:25:42

+0

謝謝你,這對我很好。 – user1498824 2012-07-10 11:31:51

2

得到SPListItemCollection,然後通過它反向迭代:

var itemCollection = FItem.Items; 
for(int i = itemCollection.Count - 1; i >= 0; i--) 
{ 
    var item = itemCollection[i]; 
    //Display entries 
} 

如果你只是遍歷FItem.Items(即調用FItem.Items[i]反覆)你最終反覆查詢列表,所以不做那。

1

你要問的問題是什麼樣的順序項目開始與 - 你做到這一點,您就可以按ID(類似於創建時間)進行分類。如果您想以其他方式對它們進行排序,請使用帶有OrderBy子句的SPQuery來檢索列表項。

1

這也可以用CAML查詢來完成。你需要返回所有物品嗎?如果您可以限制查詢,則可以使用CAML節點。