Каков наилучший способ ручной итерации (т. Е. По одному с кнопкой «Далее») над набором элементов XE в моем XDocument? Скажем, я выбираю набор элементов, который хочу таким образом:
var elems = from XElement el in m_xDoc.Descendants()
where (el.Name.LocalName.ToString() == "q_a")
select el;
Я могу использовать IEnumerator для итерации по ним, т.е.
IEnumerator m_iter;
Но когда я добираюсь до конца и хочу перейти к началу, если я вызову Reset () для него, он генерирует исключение NotSupportedException. Это потому, что, как указано в спецификации Microsoft C # 2.0 в главе 22 «Итераторы»: « Обратите внимание, что объекты перечислителя не поддерживают метод IEnumerator.Reset. При вызове этого метода создается исключение System.NotSupportedException ."
Так каков правильный способ сделать это? А что, если я также хочу иметь двунаправленную итерацию, то есть кнопку «назад» тоже?
Кто-то на дискуссионном форуме Microsoft сказал, что в любом случае я не должен использовать IEnumerable напрямую. Он сказал, что есть способ сделать то, что я хочу с LINQ, но я не понимаю, что. Кто-то еще предложил добавить XElements в список с помощью ToList (), что, я думаю, сработает, но я не был уверен, что это «лучшая практика». Заранее спасибо за любые предложения!