Find next record in a set: LINQ

后端 未结 3 1659
遇见更好的自我
遇见更好的自我 2020-12-29 09:27

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

3条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-29 09:35

    There are quite a few solution. I suggest something like the following.

    var next = items
        .Where(item => item.Id > currentId)
        .OrderBy(item => item.Id)
        .First();
    
    var next = items
        .OrderBy(item => item.Id)
        .First(item => item.Id > currentId);
    

    If you want the ids in the order they appear in the collection, you could use the following.

    var next = items
        .SkipWhile(item => item.Id != currentId)
        .Skip(1)
        .FirstOrDefault();
    

    If this returns null, you have tried to get next item of the last item.

提交回复
热议问题