Se traduce como SqlXml
y puede obtener un XmlReader
con SqlXml.CreateReader
de eso. Tendría que usar SqlDataReader.GetSqlXml
método para obtener el tipo en lugar de una cadena.
Por ejemplo:
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
SqlXml xmlData =
reader.GetSqlXml(0);
XmlReader xmlReader = xmlData.CreateReader();
xmlReader.MoveToContent();
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.Element)
{
string elementName = xmlReader.LocalName;
xmlReader.Read();
Console.WriteLine(elementName + ": " + xmlReader.Value);
}
}
}
ACTUALIZACIÓN: Para responder a un comentario útil de @Wiktor Zychla
El rendimiento de este enfoque es mejor y puede ser mucho mejor cuando se trata de grandes campos XML porque SqlReader.GetString
cargará el contenido del campo en una cadena primero mientras SqlReader.GetSqlXml
crea un XmlReader desde la secuencia directamente. Eso se puede verificar rápidamente con un vistazo a System.Data en Reflector o una herramienta similar.