反转SPlist

时间:2012-07-10 09:58:20

标签: c# sharepoint

我需要以相反的顺序从列表中提取项目(从最后一个条目到第一个条目)。我已经设法获得所有项目,但从第一个到最后一个。以下是我正在使用的代码的一部分:

列表位于不同的网站集上。

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

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



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

4 个答案:

答案 0 :(得分: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 :(得分: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
    }
}

答案 2 :(得分:1)

您需要问的问题是项目的开始顺序 - 您的方式,它们将按ID排序(类似于创建时间)。如果要以其他方式对它们进行排序,请使用带有OrderBy子句的SPQuery来检索列表项。

答案 3 :(得分:1)

这也可以通过CAML查询来完成。你需要退回所有物品吗?如果可以限制查询,则可以使用CAML节点。