我需要以相反的顺序从列表中提取项目(从最后一个条目到第一个条目)。我已经设法获得所有项目,但从第一个到最后一个。以下是我正在使用的代码的一部分:
列表位于不同的网站集上。
using (SPSite oSite = new SPSite("urltolist"))
{
using (SPWeb oWeb = oSite.RootWeb)
{
SPList FItem = oWeb.Lists["List"];
foreach (SPListItem item in FItem.Items)
{
//Display entries
}
}
}
答案 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节点。