在pageLoad
事件中,我想要访问两个不同的SharePoint列表,并获取其中一个列表的第一个ListItem和另一个列表的最后一个ListItem。 我不知道任何ListItem ID,所以我猜这需要通过列表索引来完成 - 只是不确定如何实现。一旦已经获得了列表的处理,有人可以使用c#建议获取上述情况的第一个和最后一个项目的最佳方法吗?
在pageLoad
事件中,我想要访问两个不同的SharePoint列表,并获取其中一个列表的第一个ListItem和另一个列表的最后一个ListItem。 我不知道任何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();
对于“最后一项”,您需要反转排序:
<OrderBy><FieldRef Name='ID' Ascending='FALSE' /></OrderBy>
如果你想根据另一个条件获取最后一个和第一个项目,只需要按照另一个字段改变排序顺序。
更新:
更好的方法是按照正如@Kobi指出的那样,不仅如此,创建的字段还可以通过代码进行更改。ID
字段排序。这样也可以实现相同的结果。
SPWeb web = SPContext.Current.Web;
SPList List = web.Lists[ListName];
int itemId = List.Items[List.ItemCount - 1].ID;
Regards!