August 2009 - Posts
Pessoal, os fontes que utilizei na minha palestra no TechEd 2009 Brasil não vou publicar disponibilizar on-line pq no meu livro LINQ com C# e nos DVDs de LINQ To SQL e Crie uma aplicação ASP.NET com LINQ vcs encontram muitos exemplos que usei. Bom, no meu site vc encontra os links para adquirir os produtos. Vale dizer que aqui no blog em muitas dicas de linq, basta selecionar a tag de LINQ para ver toda a relação.
Em breve vou lançar um DVD avançado de LINQ To SQL e Entity Framework. Para receber o aviso, se cadastre no www.renatohaddad.com
Amanhã irei palestrar sobre as novidades do Entity Framework 4 as 10h30.
[]s Renatão
Pessoal, algumas pessoas me questionaram os links dos meus artigos sobre o ASP.NET Dynamic Data que exibi no TechEd 2009 hj 26/Ago. Aqui estão os links:
http://msdn.microsoft.com/pt-br/library/dd560511.aspx
http://msdn.microsoft.com/pt-br/library/dd871162.aspx
Bos sorte e estude bastante pq isto é show mesmo. []s Renatão
Pessoal, o TechEd Brasil está chegando, será em SP de 25 a 27/agosto/2009 e para quem for, irei ministrar as seguintes palestras:
DAT - DAT202 – 200
Novidades do Entity Framework 4.0DAT - DAT401 – 400
Dicas e truques do LINQ, Entity Framework, Linq to SQL e Expressões Lambda
WEB - WEB303 – 300
Explorando o ASP.NET Dynamic Data
Já tenho todas as demos prontas no estilo Renato Haddad, entenda-se, código, código e mais código. Especialmente a palestra de Dicas e truqes de LINQ e Lambda preparei város exemplos reais do dia a dia de um desenvolvedor. Depois desta palestra, dificilmente vc não irá usar estes fantásticos recursos do Lambda e LINQ.
Vou sortear DVDs e um livro nas palestras. Nos vemos lá. []s Renatão
Em certos casos de uma interface de usuário onde é preciso verificar se o campo é numérico ou não, use o TryParse. veja o código a seguir onde a variável qtde (do tipo int) está referenciada no out do TryParse. ele retorna true/false e se converter, beleza; caso contrário vc trata.
int qtde;
if (int.TryParse(txtQtde.Text.Trim(), out qtde) == false)
{
MessageBox.Show("mensagem")
return; }
O VB.NET também aceita isto, mas o VB.NET tem o IF (IsNumeric(txtQtde.Text)... Bendito VB.NET :)
Existem situações nas aplicações onde é preciso usar vários critérios numa pesquisa, por exemplo, como saber quais clientes cadastrados das cidades a, b, c, etc? com o linq o uso do Where facilita muito. Baseado no banco de dados Northwind, veja um código onde carrego a listbox cidades somente com os nomes das cidades contidas na classe (tabela) Customers. O Distinct já filtra somente cidades únicas.
lstCidades.DataSource = From c In db.Customers Select c.City Distinct
Agora, veja o código para uma pesquisa comum com apenas uma cidade selecionada:
gridDados.DataSource =
From c In db.Customers Order By c.City Where c.City.Equals(lstCidades.Text)Muito bem. Agora é que vem o truque. se setar a propriedade SelectionMode para MultiSimple do listbox,irá permitir o usuário selecionar várias opções do listbox. E, como fica o código da pesquisa? Com o LINQ é preciso pensar um pouco diferente, pois primeiro é preciso definir uma lista com todas as cidades selecionadas - veja que usei o Generics List(Of String) com um looping For Each para varrer somente os ítens selecionados do lstCidades. A cada iteraçáo o respectivo item (neste caso o nome da cidade) é adicionada à variável cidade (que é a lista com Generics). Em seguida, observe como que defini o critério de forma contrária, pois o linq é assim, ou seja, normalmente vc pensa onde (where) a propriedade cidade (c.City) contiver (Contains) a lista de cidades. Mas, o correto é onde Where a lista cidades contiver a propriedade cidade (veja a última linha de código).
Dim
cidades As New List(Of String)For Each Item In lstCidades.SelectedItems
cidades.Add(Item.ToString)
Next
gridDados.DataSource =
From c In db.Customers Order By c.City Where cidades.Contains(c.City)
É isto, aqui está mais uma sensacional dica do LINQ. Caso queira aprender o linq com C#, leia o meu livro http://www.editoraerica.com.br/buscafinal.asp?cod=2366
Boa sorte e viva o LINQ !!!
Consultas usando o fantástico LINQ seja no dbml ou no entity framework tem sido usado cada vez mais, afinal, quem conhecer o linq nunca mais irá requer saber de codificar de outra forma. Aqui temos um exemplo em VB para formatar o UnitPrice com o formato moeda e duas casas decimais exibindo (R$ 19.50), usando o FormatCurrency(objeto, 2). Já o FormatNumber(objeto, 0) formata o UnitsInStock com zero casas decimais.
Dim
produtos = From p In dbml.Products _Select p.ProductName, _
preco = FormatCurrency(p.UnitPrice, 2), _
estoque = FormatNumber(p.UnitsInStock, 0)
O melhor de tudo é que se você usar por exemplo SeuGridView.DataSource = produtos, todos os dados serão exibidos no grid. Use e abuse do LINQ. Sabe em quais projetos eu tenho usado o LINQ???? em todos os projetos :)
More Posts