query - linq syntax
¿Usando XQuery en Linq to SQL? (1)
Digamos que tengo una tabla que tiene una columna de datos de tipo XML. Dentro de SQL, puedo ejecutar la siguiente declaración:
select top 10 *,
Content.value(''(/root/item/value)[1]'', ''float'') as Value
from xmltabletest
where Content.value(''(/root/item/MessageType)[1]'', ''int'') = 1
El conjunto de resultados contiene solo los registros que coinciden con los criterios, y extrae un valor del XML en una columna llamada ''Valor''. Agradable y simple.
¿Se puede lograr lo mismo con Linq To SQL?
Me gustaría que SQL haga el trabajo pesado y solo devuelva datos que coincidan con mis criterios en lugar de tener que seleccionar, transferir y luego procesar un fragmento potencialmente masivo de datos. Por lo que puedo decir, esto no es posible en este momento, pero pensé que debería preguntar.
(El entorno es .NET 3.5, VS2008, SQL Server 2005 si eso ayuda)
No estoy exactamente seguro de si esto no está actualizado ahora, pero según Scott Guthrie, los tipos de datos XML son:
representados como cadenas en LINQ to SQL Entities. Podría usar XLINQ para consultar en una columna XML dentro de su entidad LINQ to SQL, pero esta consulta ocurriría en su nivel medio (dentro de ASP.NET). No puede ejecutar un XQuery remoto contra la base de datos y filtrar los resultados devueltos en base a eso en la primera versión.
Entonces, en respuesta a su pregunta, yo diría "no".