Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get the First & Last ListItem in Sharepoint List

On a pageLoad event I want to go to two different SharePoint Lists and get the first ListItem from one list and an the last ListItem in another. I don't know any of the ListItem ID's so I guess this needs to be done through the list index - just not sure how to implement this. Having got a handle on the List can someone advise (using c#) the best way to get the first and last items for the scenario outlined above?

like image 250
merlynhs Avatar asked Jan 04 '12 12:01

merlynhs


2 Answers

The condition "first item" and "last item" is not very clear. Assuming you want to retrieve the first and the latest created item. Important to note is that retrieving items via the index of the SPListItemCollection can be slow for large lists since accessing SPList.Items returns all items of the list. That's why I suggest using a CAML query:

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();

For the "last item" you have to reverse the ordering:

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

If you want to get the last and the first item based on another condition you just have to change the order by field.

Update:
Even better would be to order by the ID field. With that you could achieve the same result. Not only better, the created field could have been changed through code as pointed out by @Kobi.

like image 110
Stefan Avatar answered Oct 17 '22 03:10

Stefan


You can try this to get the last itemID

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

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

Regards!

like image 27
Lisandro Avatar answered Oct 17 '22 04:10

Lisandro