I have a list of objects which all have an id property
E.g
1, 10, 25, 30, 4
I have a currentId and I need to find the next Id in the list
So for example current Id is set to 25, I need to return the object with an id of 30. The one after that would be 4.
How would I do this elegantly in LINQ?
EDIT
The list is ordered by a "sort" property. So you cannot just order by id, as that would mess up the order.
Without re-ordering (note I edit slightly as I think I misread the question):
int[] data = {1, 10, 25, 30, 4};
int last = 25;
var next = data.SkipWhile(i => i != last).Skip(1).First();
Obviously, if data
was a set of objects, something like:
var next = data.SkipWhile(obj => obj.Id != last).Skip(1).First();
int currentId = 25;
var next = yourCollection.Where(i => i.Id > currentId).OrderBy(i => i.Id).First();
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