Каков «лучший способ» ручной итерации (т. е. по одному с кнопкой «Далее») по набору XElements в моем 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(), что, я думаю, сработает, но я не был уверен, что это «лучшая практика». Спасибо заранее за любые предложения!