如何在不断变化的列表中查找列表/数组的当前索引
本文关键字:列表 数组 索引 查找 变化 | 更新日期: 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!