Ele se traduz em
SqlXml
e você pode obter um XmlReader
com SqlXml.CreateReader
a partir dele. Você teria que usar SqlDataReader.GetSqlXml
método para obter o tipo em vez de uma string. Por exemplo:
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);
}
}
}
ATUALIZAÇÃO: Para responder a um comentário útil de @Wiktor Zychla
O desempenho dessa abordagem é melhor e pode ser muito melhor ao lidar com campos XML grandes porque
SqlReader.GetString
carregará o conteúdo do campo em uma string primeiro enquanto SqlReader.GetSqlXml
cria um XmlReader diretamente do fluxo. Isso pode ser verificado rapidamente com uma olhada no System.Data no Reflector ou em uma ferramenta similar.