similaires à cette question:LINQ to XML et des compteurs à travers de multiples projections
LINQ, iterators, selecting and projection
Je souhaite utiliser un compteur ou variable incrémenter dans une projection - mais je suis vouloir utiliser le même compteur à travers plusieurs projections. Je construis un document xml en utilisant un certain nombre de projections basées sur différentes sources de données, mais j'ai besoin de maintenir un nœud "id" (où l'identifiant est une valeur incrémentée).
je peux réaliser ce pour une projection en utilisant quelque chose de similaire à
Dim x as New XElement("rootNode", list.Select(Of XElement)(Function(xe, count) new XElement("blah", count+1)))
Je veux ensuite ajouter un autre groupe de XElements à la racine, en continuant le compteur de la valeur précédente
Modifier: Note - ce qui précède ne décrit peut-être pas très bien mon problème - Je veux interroger un document XML (qui était représenté par la liste ci-dessus) et basé sur un ensemble de nœud s, ajouter de nouveaux nœuds à un autre document. Puis interrogez le document pour un autre ensemble de noeuds et ajoutez quelques nouveaux noeuds à l'autre document, en maintenant le compteur incrémenté sur les deux ensembles.
à savoir
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))))
Idéalement, ce serait sortie:
<test>
<blah>
<id>0</id>
</blah>
<blah>
<id>1</id>
</blah>
<blah>
<id>2</id>
</blah>
<blah>
<id>3</id>
</blah>
</test>
D'autres suggestions sur la meilleure façon de mettre en œuvre cela? – hitch