我有一个列表,可以在第一个电话中说10个项目:
var myList = GetMyList();
好的,现在我从这个列表中得到了我想要的项目:
myList.FirstOrDefault(x => x.Id == id);
现在我去网页做一些事情。
现在我回来了:如果通过我的API中的休息调用停用了任何内容,则列表可能已经改变了。 (我在构造函数中重建当前列表)
public OneItemFromMyList Get(int id)
{
//Here I need the next item in the list after the one with the above Id
}
那我怎么得到那个呢。我不想重复之前检索到的一个,我不想移出列表,所以如果我在最后一个位置,我需要重新开始。
任何建议?
答案 0 :(得分:1)
要在具有特定id
的项目之后立即获取项目,请执行以下操作:
var nextItem = myList.SkipWhile(x => x.Id != id).Take(2).LastOrDefault();
请注意,如果满足以下任一条件,则可能无法生成项目:
x.Id == id
的项目不存在,或x.Id == id
项是列表中的最后一项。答案 1 :(得分:1)
我认为这对你有用:
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!