LINQ to Object

12/12/2007 12:54:00 PM By Felipe Pessoto

Agora com o Visual Studio 2008 estou fazendo alguns testes com os novos recursos do Framework 3.0 e 3.5.

Vou colocar aqui um exemplo de página que mostra os números pares, usando o LINQ e como fonte de dados um array.

Crie um novo WebSite, sem esquecer de usar o Framework 3.5:

Adicione um Button e um Label:

De dois cliques no Button para gerar o método do evento Click. Dentro do método insira o seguinte código(usei comentários para explicar o código):

 

//Nossa fonte de dados
int[] numeros = { 1, 2, 3, 4, 5, 6 };

//Query do Linq, depois da keyword in, especificamos a fonte de dados
//Usamos where para filtrar os resultados
//retornando só os que tiverem resto da divisão por 2 igual à 0
//o select serve para o Linq saber o que deve retornar
//daqueles que passarem pelo filtro
//no caso o proprio numero, mas poderiamos
//por exemplo retornar num.ToString()
var query = from num in numeros
where num % 2 == 0
select num;

//Passa cada numero retornado pro Label
//Perceba que a variavel query é definida como IEnumerable<int>
//var é um novo recurso do Framework 3.5
//O tipo da variável é definido na compilação
//A variavel continua sendo tipada
foreach (var numero in query)
{
lblResultado.Text += numero.ToString() + "<br>";
}

Agora tecle F5 para abrir o website e clique no Button, vai aparecer os números 2, 4 e 6:

Visual Studio 2008 e .NET Framework 3.5 RTM - Versão final liberada

11/19/2007 7:18:00 PM By Felipe Pessoto

Já saiu a versão final do Visual Studio 2008!

Quem quiser fazer o download da versão express pode pegar nesses links:

Visual C# 2008 Express
Visual Basic 2008 Express
Visual C++ 2008 Express
Visual Web Developer 2008

Ou pode baixar a instalação offline: Download

E aqui a versão Team System Trial(90 dias): Visual Studio Team System 2008 Team Suite

Finalmente o Runtime do .Net3.5: Download

Usando o LINQ

10/17/2007 2:51:00 PM By Felipe Pessoto

O .Net 3.5 traz uma novidade chamada LINQ(Language Integrated Query), que pretende integrar em uma linguagem de query uma forma de fazer pesquisas em fontes de dados.

Vou mostrar aqui como fica mais simples de gerar XML, e muito mais fácil de ler também:

//Inclua esse namespace
using System.Xml.Linq;

//Dentro do método Main
XDocument DocXml = new XDocument(
                               new XElement("Clientes",
                                      new XElement("Cliente",
                                           new XAttribute ("Nr", 1),
                                           new XElement("Nome", "Maria")
                                           )
                                      )
                                );

Console.WriteLine(DocXml);
Console.Read();



É bem mais intuitivo criar o elemento Pai e no construtor criar os filhos, do que fazer como no .Net2.0 em que você tinha que criar o elemento Filho, então criar o Pai, e adicionar o Filho no elemento Pai.

Uma diferença interessante entre o novo C#3.0 e o Visual Basic 9.0 é que o VB aceita literais XML, exemplo:

Dim ElementoXml As XElement =
     <clientes>
        <cliente nr="1">
            <nome>Maria</nome>
        </cliente>
     <clientes>


Sendo um literal, será interpretado em tempo de compilação e não uma string que vai ser convertida em runtime, assim evita-se erros inesperados. Por enquanto o C# não tem essa implementação e talvez seja assim na versão final também.

Você também pode criar elementos XML da seguinte maneira, usando uma Query Expression:

  List<int> MegaSena = new List<int>();

  MegaSena.Add(13);
  MegaSena.Add(21);
  MegaSena.Add(27);
  MegaSena.Add(33);
  MegaSena.Add(39);
  MegaSena.Add(43);

  XElement elementoNumeros =
     new XElement("Numeros",
        from Numero in MegaSena
        select new XElement("Numero", Numero)
     );