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?
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
Not only better, the created field could have been changed through code as pointed out by @Kobi.ID
field. With that you could achieve the same result.
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!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With