在具有当前ID的对象之后获取列表中的下一个对象

时间:2015-01-15 18:37:57

标签: c# linq linq-to-objects

我知道标题令人困惑所以我会尽力在这里解释......

我有

class T{
   int id;
   string value;
}


List<T> objs;

在我的代码中,当我检索初始列表时,我使用

获取第一个id
int currentID = objs.FirstOrDefault().id;

现在我需要抓住下一个。不知道我在哪里的当前位置如何才能抓住下一个项目ID ...

 objs.select(x => x.id)
        .where(//you are the object that exists after the one with currentID);

2 个答案:

答案 0 :(得分:4)

如果你想在某个元素之后获取下一个元素,那么你可以使用SkipWhile()Skip()这样的方法:

objs.SkipWhile(x => x.id == currentID).Skip(1).FirstOrDefault();

答案 1 :(得分:0)

您只是编制索引,因此请使用ElementAt

int i = 0; //current position
int currentID = objs.ElementAt(i).id;
i++;

在循环中执行以获取下一个等等。

如果您实际上只想迭代所有元素,只需使用foreach

foreach (T obj in objs)
{
   int currentID = obj.id;
}

最后,您可以使用GetEnumerator并将MoveNext函数与Current属性一起使用。这基本上是使用foreach但是自己控制迭代。