Introdução à LINQ, usando LINQ com Objetos - Revista easy .net Magazine 15
Este artigo procura apresentar, de maneira introdutória, como o recurso do .NET Framework conhecido como LINQ To Objects pode ser empregado na manipulação de coleções de objetos, utilizando-se para isto queries escritas em C#.
Este artigo procura apresentar, de
maneira introdutória, como o recurso do .NET Framework conhecido como LINQ To
Objects pode ser empregado na manipulação de coleções de objetos, utilizando-se
para isto queries escritas em C#. Language-Integrated Query (LINQ) é um recurso
do framework .NET que possibilita, basicamente, a execução de consultas
(queries) sobre agrupamentos de dados. Tais agrupamentos podem ser coleções de
objetos, entidades correspondentes a estruturas de dados de um banco SQL
Server, documentos XML ou, ainda, Datasets obtidos através das classes de
acesso a dados do ADO.NET. A execução destas consultas busca, normalmente,
filtrar um conjunto mais reduzido de itens ou, ainda, gerar novas informações a
partir da fonte de dados original. Queries em LINQ podem ser escritas
empregando sintaxe C# ou VB.NET. LINQ to Objects, por sua vez, é um mecanismo
que possibilita a execução de tais tipos de queries em listas ou arrays, sendo
que tais coleções contêm um conjunto de itens de um determinado tipo. Em que situação o tema é útil Manipular agrupamentos de um
determinado tipo de objeto ou dado representa, via de regra, um tipo de
atividade bastante comum durante o desenvolvimento de aplicações de software.
Tal atividade destina-se, em geral, à obtenção de um ou mais itens dentro de
uma coleção ou, mesmo, à geração de novas informações como somatórios, por
exemplo. LINQ to Objects -
Utilizando LINQ para manipular coleções de objetos Consumir informações de
coleções contendo objetos é, de modo geral, um tipo de ocorrência bem frequente
durante o desenvolvimento em .NET. Um meio bastante disseminado para resolver
este tipo de demanda consiste, basicamente, no uso de estruturas de repetição
(while, for, foreach) e de decisão (if, if-else), em conjunto com a declaração
de diversas variáveis para estabelecer alguma forma de controle. O uso do
mecanismo conhecido como LINQ to Objects procura simplificar este tipo de
atividade, economizando esforços dos desenvolvedores e flexibilizando a maneira
de se tratar agrupamentos de objetos.
Procurando oferecer alternativas para simplificar o cotidiano dos desenvolvedores, o framework .NET conta desde a versão 3.5 (utilizada em conjunto com o Visual Studio 2008) com o mecanismo conhecido como Language-Integrated Query (LINQ). Trata-se de um recurso que permite a construção de consultas (queries) em C# ou VB.NET, numa abordagem similar àquela adotada pela linguagem SQL ou, ainda, num padrão mais convencional para linguagens orientadas a objetos (através da invocação na sequência de um conjunto de métodos específicos).
Assim como acontece com outras construções de código tais como declarações de variáveis ou invocações de métodos, o IntelliSense do Visual Studio oferece também pleno suporte para a utilização de código escrito em LINQ. Já diferentemente do que acontece ao se empregar instruções SQL no código, uma das principais vantagens de se utilizar LINQ está no suporte que o compilador do .NET Framework oferece para este tipo de recurso; caso se opte por acessar uma base de dados SQL Server via LINQ, prováveis erros de sintaxe numa consulta são diagnosticados durante o desenvolvimento, algo que através de SQL somente seria observado em tempo de execução da aplicação em questão.
O uso de LINQ sobre agrupamentos de dados torna possível, com menor esforço por parte de quem está programando, operações como: seleção de todo um agrupamento de dados ou, ainda, de parte deste (neste caso, mediante alguma condição que restrinja os valores a serem retornados); projeções, nas quais utilizam-se apenas algumas das informações pertencentes a um conjunto de objetos; ordenação de um agrupamento de itens de acordo com algum critério específico; novos agrupamentos, aplicando-se para isto funcionalidades de contagem, soma, média, mínimo e máximo.
A meta deste artigo é abordar a utilização de LINQ to Objects no desenvolvimento de soluções dentro da plataforma .NET. Para isto serão demonstrados alguns exemplos de consultas sobre uma coleção de objetos, bem como discutidos alguns conceitos acerca do uso deste tipo de recurso.
Tipos de implementações de LINQ
Procurando atender a uma ampla gama de necessidades, o .NET Framework disponibiliza diversas implementações para a utilização de LINQ:
• LINQ to Objects;
• LINQ to XML;
• LINQ to SQL;
• LINQ to Dataset;
• LINQ to Entities.
LINQ to Objects é um recurso que permite a construção de consultas para a manipulação de coleções de objetos. Isto dispensa os desenvolvedores da necessidade de se utilizarem loops complexos, com uma lógica envolvendo estruturas condicionais (if, if-else) e de repetição (for, foreach, while), bem como evita a declaração de uma série de variáveis a fim de se cumprir tal objetivo. Importante frisar que consultas escritas em LINQ to Objects podem ser aplicadas em qualquer coleção que implemente as interfaces IEnumerable e / ou IEnumerable<T>, em que T é qualquer tipo válido dentro do .NET Framework.
A extensão LINQ to XML é empregada na manipulação de dados no formato XML, disponibilizando uma série de recursos a fim de simplificar operações que envolvam a escrita e a leitura de informações em XML.
Já a implementação LINQ to SQL permite que se realizem consultas em base de dados, valendo-se para isto do uso de classes geradas a partir de um modelo visual disponibilizado pelo Visual Studio. Graças a estas características, este mecanismo elimina a necessidade de escrita de strings com comandos SQL, beneficiando-se com isso do suporte que o Visual Studio oferece para o uso de LINQ durante a construção de uma aplicação (IntelliSense e verificação de erros antes da compilação). A plataforma .NET oferece suporte nativo para o acesso a SQL Server através de LINQ, sendo que outros fornecedores também disponibilizam soluções proprietárias para o uso de outros tipos de bancos de dados.
Com a extensão LINQ to Dataset torna-se possível a execução de queries sobre os dados contidos em Datasets. Um Dataset é geralmente obtido via classes de acesso a dados do ADO.NET, representando em memória estruturas (tabelas ou visões) existentes em uma base de dados.
O recurso conhecido como LINQ to Entities é a base para a utilização do Entity Framework. Este último, por sua vez, nada mais é do que um mecanismo de mapeamento objeto-relacional (ORM) que a plataforma .NET disponibiliza para a utilização de bancos de dados. Através do Entity Framework, estruturas de dados são representadas sob a forma de classes, sendo que consultas a um banco de dados são realizadas por meio de queries escritas em LINQ." [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo