1

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

该列表位于不同的网站集中。

     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

4 回答 4

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]重复调用)你最终会重复查询列表,所以不要这样做。

于 2012-07-10T10:02:47.760 回答
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
    }
}
于 2012-07-10T10:03:04.917 回答
1

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

于 2012-07-10T15:14:07.303 回答
1

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

于 2012-07-10T15:19:59.053 回答