Linq vS Lambda Expression : Trabalhando com Linq To XML - Parte 2

No artigo o autor ensina como fazer Select, update e delete com xml e mostra as diferenças entre Linq e Lambda Expression

 

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.

 

<item></item>

  <pessoa name="Emerson" idade="20"></pessoa>

  <pessoa name="Angelica" idade="21"></pessoa>

 

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.   

Artigos relacionados