如何在更改列表中查找列表/数组的当前索引?

时间:2014-11-25 03:10:26

标签: c# list

我有一个列表,可以在第一个电话中说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
}

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

任何建议?

2 个答案:

答案 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!