查找集合中的下一条记录:LINQ

qui*_*qui 14 c# linq

我有一个对象列表,都有一个id属性

例如

1,10,25,30,4

我有一个currentId,我需要在列表中找到下一个Id

因此,例如当前Id设置为25,我需要返回id为30的对象.之后的那个将是4.

我如何在LINQ中优雅地完成这项工作?

编辑

该列表按"sort"属性排序.因此,您不能只按ID排序,因为这会弄乱订单.

Mar*_*ell 35

没有重新排序(注意我稍微编辑,因为我认为我误读了这个问题):

int[] data = {1, 10, 25, 30, 4};
int last = 25;
var next = data.SkipWhile(i => i != last).Skip(1).First();
Run Code Online (Sandbox Code Playgroud)

显然,如果data是一组对象,例如:

var next = data.SkipWhile(obj => obj.Id != last).Skip(1).First();
Run Code Online (Sandbox Code Playgroud)

  • 就目前而言,它会抛出 - 但你可以使用`FirstOrDefault`代替,它不会抛出. (3认同)