Olá pessoal, continuando a série de artigos sobre XML utilizando a tecnologia Linq To XML, o artigo de hoje vai abordar como fazer um CRUD (selecionar, Atualizar, Excluir), existe uma novidade.

Vamos aborda a tecnologia Lambda Expression aonde vamos perceber que é possível economizar muito código Linq.Para desenvolvimento do artigo estou utilizando aplicação console.

Obs:  É preciso ler o primeiro artigo, para não ter duvidas de como gerar a estrutura XML utilizada nos exemplos.

Antes de começar a desenvolver os exemplos é preciso carregar a estrutura XML como mostra o exemplo abaixo utilizando XDocument Load.

string path = "D:\\DataTeste.xml";           

XDocument documento = XDocument.Load(path);

 

 

//Linq

var query = (from c in documento.Descendants("item") select c).FirstOrDefault();

 

//Lambda Expression

var query = documento.Descendants("item").FirstOrDefault();

 

Resultado.

 

 

 

 

Definição: Quando executado o exemplo acima vai imprimir na tela a estrutura inteira do arquivo,  executando com linq ou lambda expression conseguimos ter o mesmo resultado.

 

 

//Linq

var query = (from c in documento.Descendants("pessoa") select new { name = c.Attribute("name").Value });

 

//Lambda Expression

var query = documento.Descendants("pessoa").Select(b => new { name = b.Attribute("name").Value });

Resultado:

Emerson

Angelica

 

Definição: No exemplo selecionamos o atributo name do nô pessoa.

 

//Linq

var query = (from c in documento.Descendants("pessoa")

                        where (string)c.Attribute("name").Value == "Angelica"

                   select new { name= c.Attribute("name").Value }).FirstOrDefault();

 

//Lambda Expression

var query = documento.Descendants("pessoa").Select(r=>

            new{name = r.Attribute("name").Value}).FirstOrDefault(r => (string)r.name == "Angelica");

 

Definição: O exemplo que fizemos agora foi where utilizando linq e outro com lambda podemos perceber que em alguns casos o código fica quase na mesma

proporção e acaba não sendo vantajoso.

 

// update

var query = (from c in documento.Descendants("pessoa")

                        where (string)c.Attribute("name").Value == "Angelica"

                select new { name = c.Attribute("name") }).FirstOrDefault();

if (query != null)

{

            query.name.SetValue("Eder");

}

documento.Save("D:\\DataTeste.xml");

 

Definição: Para realizar o update é preciso fazer um select para retorna um conteúdo e ver se o mesmo existe,caso seja diferente de null podemos atribuir os novos valores para os campos e realizar um save para substituir o arquivo existente pelo novo.  

 

//Delete

 var query = (from c in documento.Descendants("pessoa")

                         where (string)c.Attribute("name").Value == "Angelica"

                         select new { name = c.Attribute("name") }).FirstOrDefault();

            if (query != null)

            {

                query.name.Remove();

            }

 

            documento.Save("D:\\DataTeste.xml");

 

Definição: A exclusão e quase igual o update precisamos informa o elemento que queremos excluir,diferente da exclusão na base de dados o xml exclui um nô como um todo.

Pessoal espero que tenham gostado e não deixem de visitar Programming in Csharp sempre com novas dicas.