Aqui está el ejemplo de linq con ficheros xml.
Voy a seguir trabajando con los mismos datos que en el ejemplo anterior. El fichero xml queda así:
<libro>
<titulo>Pascal 7</titulo>
<autor>Luis Joyanes</autor>
</libro>
<libro>
<titulo>Enciclopedia de C#</titulo>
<autor>Francisco javier Ceballos </autor>
</libro>
<libro>
<titulo>El código Davinci</titulo>
<autor>Dan Brown </autor>
</libro>
<libro>
<titulo>Ángeles y demonios</titulo>
<autor>Dan Brown</autor>
</libro>
</libros>
Antes de nada hay que hacer un “using” al linq de xml
Este método hace la ordenación por título de todos los libros
{
//Cargamos el documento xml (path es la dirección donde está el xml)
XDocument cargaDocumento = XDocument.Load(path);
//Creamos la query
var query = from libro in cargaDocumento.Descendants("libro")
orderby libro.Element("titulo").Value
select new
{
Titulo = libro.Element("titulo").Value,
Autor = libro.Element("autor").Value
};
//Mostramos el resultado de la ordenación en un ListBox
foreach(var libAux in query)
lbLinq.Items.Add(libAux.Titulo+" - "+libAux.Autor);
}
Este método hace la ordenación por título de todos los libros de “Dan Brown”
{
//Cargamos el documento xml (path es la dirección donde está el xml)
XDocument cargaDocumento = XDocument.Load(path);
//Creamos la query
var query = from libro in cargaDocumento.Descendants("libro")
where libro.Element("autor").Value.ToString().Equals("Dan Brown")
orderby libro.Element("titulo").Value
select new
{
Titulo = libro.Element("titulo").Value,
Autor = libro.Element("autor").Value
};
//Mostramos el resultado de la ordenación en un ListBox
foreach (var libAux in query)
lbLinq.Items.Add(libAux.Titulo + " - " + libAux.Autor);
}
Como podeis ver la query se escribe de forma parecida al ejemplo anterior, la diferencia es que para acceder a los valores hay que poner:
Aunque la gran diferencia es esta:
Con esto, estamos creando las propiedades “Titulo” y “Autor” en cada uno de los elementos que va a tener la colección que recojamos de la query, y se hace en tiempo de EJECUCIÓN
Espero que os sirva de ayuda. Un saludo!
0 Responses
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.