Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/04/2013, 01:02
Avatar de Bravenap
Bravenap
 
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años
Puntos: 4
Respuesta: WHERE IN en LINQ

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
  1. <?xml version="1.0"?>
  2. <destacados>
  3.    <id>1</id>
  4.    <id>54</id>
  5.    <id>102</id>
  6.    <id>...</id>
  7. </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 original
  1. Dim xd As XElement = XElement.Load(rutaCatalogo)
  2. Dim dest as XElement = XElement.Load(rutaDestacados)
  3. Dim libs As IEnumerable(Of Libro) = From c In xd.Descendants(ns + "BookListing") _
  4.       Join d In dest.Descendants("destacados") _
  5.       On CInt(c.Elements(ns + "vendorListingid").Value) Equals Cint(d.<id>.Value)
  6.       Select New Libro(c,d)
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!