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í:
[code lang=»xml»]
Antes de nada hay que hacer un «using» al linq de xml
[code lang=»csharp»]
using System.Xml.Linq;
[/code]
Este método hace la ordenación por título de todos los libros
[code lang=»csharp»]
private void ordenaLinqXML(string path)
{
//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);
}
[/code]
Este método hace la ordenación por título de todos los libros de «Dan Brown»
[code lang=»csharp»]
private void selectLinqXML(string path)
{
//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);
}
[/code]
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:
[code lang=»csharp»]
libro.Element(«ELEMENTO AL QUE QUEREMOS ACCEDER»).Value
[/code]
Aunque la gran diferencia es esta:
[code lang=»csharp»]
select new
{
Titulo = libro.Element(«titulo»).Value,
Autor = libro.Element(«autor»).Value
};
[/code]
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!
No esta completo este codigo. A mi no me funciono. Gracias