He cambiado de estrategia y, sin haber resuelto el problema, me he creado otro. La función destaca() lo que va a hacer es crear un archivo XML independiente en el que se guarden los identificadores destacados. El archivo destacados.xml tiene esta forma:
Código XML:
Ver original<?xml version="1.0"?>
<destacados>
<id>1</id>
<id>54</id>
<id>102</id>
<id>...</id>
</destacados>
Este archivo lo creo sin problemas. La cuestión ahora es que necesitaría hacer ahora las consultas uniendo los dos XML mediante el uso de JOIN en LINQ, de manera que se obtenga el catálogo y se le añada a cada título un elemento <destacado> con valor 1 ó 0 dependiendo de si su identificador está en destacados.xml.
La búsqueda debería ser algo así (lo hago de memoria porque no tengo el código a mano en este momento) pero no consigo que funcione con todos los ejemplos que he visto de "joins" en LINQ:
Código vb:
Ver originalDim xd As XElement = XElement.Load(rutaCatalogo)
Dim dest as XElement = XElement.Load(rutaDestacados)
Dim libs As IEnumerable(Of Libro) = From c In xd.Descendants(ns + "BookListing") _
Join d In dest.Descendants("destacados") _
On CInt(c.Elements(ns + "vendorListingid").Value) Equals Cint(d.<id>.Value)
Select New Libro(c,d)