Я знаю, что название запутывает, поэтому я попытаюсь изо всех сил объяснить здесь...
у меня есть
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);
Если вы хотите получить следующий элемент после некоторого элемента, вы можете использовать SkipWhile()
и Skip()
:
objs.SkipWhile(x => x.id == currentID).Skip(1).FirstOrDefault();
Вы просто индексируете, поэтому используйте 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
но контролирует итерацию самостоятельно.
objs[1]
), правильно? Или я упускаю некоторые детали? Вы хотите сказать, что хотите получить объект с первым идентификатором?