C# 获取第一个&;Sharepoint列表中的最后一个列表项

C# 获取第一个&;Sharepoint列表中的最后一个列表项,c#,sharepoint,sharepoint-2010,C#,Sharepoint,Sharepoint 2010,在pageLoad事件中,我想转到两个不同的SharePoint列表,从一个列表中获取第一个列表项,从另一个列表中获取最后一个列表项。我不知道任何ListItem ID,所以我想这需要通过列表索引来完成——只是不确定如何实现。在获得列表句柄后,有人能建议(使用c#)获取上述场景的第一项和最后一项的最佳方法吗?条件“第一项”和“最后一项”不是很清楚。假设要检索第一个和最新创建的项目。需要注意的重要一点是,通过SPListItemCollection的索引检索项目对于大型列表可能会很慢,因为访问SP

pageLoad
事件中,我想转到两个不同的SharePoint列表,从一个列表中获取第一个列表项,从另一个列表中获取最后一个列表项。我不知道任何ListItem ID,所以我想这需要通过列表索引来完成——只是不确定如何实现。在获得列表句柄后,有人能建议(使用c#)获取上述场景的第一项和最后一项的最佳方法吗?

条件“第一项”和“最后一项”不是很清楚。假设要检索第一个和最新创建的项目。需要注意的重要一点是,通过
SPListItemCollection
的索引检索项目对于大型列表可能会很慢,因为访问
SPList.items
会返回列表中的所有项目。这就是我建议使用CAML查询的原因:

SPList list = // some list;
SPQuery query = new SPQuery();
query.RowLimit = 1;
query.Query = "<OrderBy><FieldRef Name='ID' /></OrderBy>";

return list.GetItems(query).Cast<SPListItem>().FirstOrDefault();
SPList list=//一些列表;
SPQuery query=新建SPQuery();
query.RowLimit=1;
query.query=“”;
return list.GetItems(query.Cast().FirstOrDefault();
对于“最后一项”,您必须颠倒顺序:

<OrderBy><FieldRef Name='ID' Ascending='FALSE' /></OrderBy>

如果您想根据另一个条件获取最后一个和第一个项目,您只需更改order by字段

更新:
更好的做法是按
ID
字段排序。这样你也可以达到同样的效果。
不仅更好,还可以通过@Kobi指出的代码更改创建的字段。

您可以尝试此操作以获取最后一个itemID

SPWeb web = SPContext.Current.Web;
            SPList List = web.Lists[ListName];

            int itemId = List.Items[List.ItemCount - 1].ID;

问候

非常好。我还建议使用ID,“创建”日期可以通过代码设置。此外,如果列表很小,我不确定我是否会为查询而烦恼。这对我来说非常有用。我需要对已排序的SPListCollection执行一些操作,并且在遍历它们之前,我需要最后一项的值。这使我可以在不编写额外CAML查询的情况下完成这项工作。谢谢如何删除项目ID??!否决,因为它只是猜测最后一个项目ID。