2013-04-30 2 views
5

У меня есть этот метод:Доступ к п-й элемент IEnumerable

private IEnumerable<XElement> ReadTransactions(string file_name) 
    { 
     using (var reader = XmlReader.Create(file_name + ".xml")) 
     { 
      while (reader.ReadToFollowing("transaction", "urn:namepsaceUri")) 
      { 
       using (var subtree = reader.ReadSubtree()) 
       { 
        yield return XElement.Load(subtree); 
       } 
      } 
     } 
    } 

Этот метод считывает из файла XML. Однако мне не нужны все узлы в XML-файле одновременно.

Я хочу получить их по десять за раз.

Я пробовал работать с XPathSelectElements, но это получает все узлы, а затем мне нужно итерации через них.

Итак, есть ли способ получить узлы из файла XML, которые составляют 40-50? Я хочу изменить ReadTransactions - чтобы иметь другой входной параметр (в этом случае 40), и вместо всех элементов он вернет всего 10?

ответ

8

Как насчет Skip() и Take() методов расширения?

var items = ReadTransactions(file_name).Skip(40).Take(10); 
2

насчет ElementAt

мне кажется, это то, что вы ищете

Смежные вопросы