如何在不断变化的列表中查找列表/数组的当前索引

本文关键字:列表 数组 索引 查找 变化 | 更新日期: 2023-09-27 18:31:45

我有一个列表,让我们在第一次调用时说 10 个项目:

 var myList = GetMyList();

好的,现在我从此列表中获得所需的项目:

 myList.FirstOrDefault(x => x.Id == id);

现在我去网页做一些事情。

现在我回来了:如果通过我的 API 中的 rest 调用停用了任何内容,列表此时可能会更改。(我在构造函数中重建当前列表)

public OneItemFromMyList Get(int id)
{
     //Here I need the next item in the list after the one with the above Id
}

那么我怎么得到那个。我不想重复我之前检索到的那个,我不想移出列表,所以如果我在最后一个位置,我需要重新开始。

有什么建议吗?

如何在不断变化的列表中查找列表/数组的当前索引

要紧跟在具有特定id的项目之后获取项目,请执行以下操作:

var nextItem = myList.SkipWhile(x => x.Id != id).Take(2).LastOrDefault();

请注意,如果满足以下任一条件,则可能不会生成项目:

  • 带有x.Id == id的项目不存在,或者
  • 带有x.Id == id的项是列表中的最后一项。

我认为这对你有用:

var nextId =
    myList
        .SkipWhile(x => x != id) //skip until x == id
        .Skip(1) // but I don't want x == id so skip one more
        .Concat(myList) // but item could be removed or I hit the end so restart
        .First(); // the first item is the one I want!