Аналогично этому вопросу:
LINQ, итераторы, выбор и проекция
Я хочу использовать счетчик или инкрементную переменную в проекции - однако я хочу использовать один и тот же счетчик для нескольких проекций. Я создаю XML-документ, используя несколько проекций, основанных на разных источниках данных, но мне нужно поддерживать узел «id» (где id - это возрастающее значение).
Я могу добиться этого для одной проекции, используя что-то похожее на
Dim x as New XElement("rootNode", list.Select(Of XElement)(Function(xe, count) new XElement("blah", count+1)))
Затем я хочу добавить еще одну группу XElements в корень, продолжая счетчик с предыдущего значения
Edit:
Обратите внимание - приведенное выше, возможно, не очень хорошо описывает мою проблему - я хочу опросить XML-документ (который был представлен в списке выше) и на основе одного набора узлов добавить несколько новых узлов в другой документ. Затем запросите документ для другого набора узлов и добавьте еще несколько новых узлов в другой документ, поддерживая счетчик приращения для обоих наборов.
т.е.
Dim orig = <root>
<itemtype1>
<item>
<name>test</name>
<age>12</age>
</item>
<item>
<name>test2</name>
<age>13</age>
</item>
</itemtype1>
<itemtype2>
<item>
<name>testing</name>
<age>15</age>
</item>
<item>
<name>testing</name>
<age>14</age>
</item>
</itemtype2>
</root>
Dim newX As New XElement("test", orig.Descendants("itemtype1"). _
Descendants("item").Select(Of XElement)(Function(xe, count) New XElement("blah", New XElement("id", count))), _
orig.Descendants("itemtype2"). _
Descendants("item").Select(Of XElement)(Function(xe, count) New XElement("blah", New XElement("id", count))))
В идеале это будет выводить:
<test>
<blah>
<id>0</id>
</blah>
<blah>
<id>1</id>
</blah>
<blah>
<id>2</id>
</blah>
<blah>
<id>3</id>
</blah>
</test>