Tag Archives: ienumerable

A Magia das Interfaces

Overview – IList

Definição

O .NETFW oferece duas versões de IList, a não genérica System.Collections.IList e a System.Collections.Generic.ICollection T versão genérica para manipular coleções.

A Definição

A definição do tipo IList não genérico:

public interface IList : ICollection, IEnumerable
{
    bool IsFixedSize { get; }
    bool IsReadOnly { get; }
    Object this[int index] { get; set; }
 
    int Add(Object value);
    void Clear();
    bool Contains(Object value);
    int IndexOf(Object value);
    void Insert(int index, Object value);
    void Remove(Object value);
    void RemoveAt(int index);
}

Veja que IList implementa ICollection e IEnumerable. Além disso, expõe métodos de coleção para adicionar, remover, limpar e posicionar os elementos dentro do conjunto.

Ela também expõe um indexador de objetos que permite acessar a coleção com []:

lista[index].propriedades 

ou genérica:

lista[index]

IList Generica

Agora a versão generica de IList:

public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable
{
    T this[int index] { get; set; }
 
    int IndexOf(T item);
    void Insert(int index, T item);
    void RemoveAt(int index);
}

A ICollection T, possui mais métodos definidos na ICollection T do que na ICollection.

Ou seja, temos uma lista de membros da IList menor que o equivalente não genérica. Então temos métodos novos para acessar uma coleção com posicionamento específico.

 

 

Linq – É Excitante!

A Saga

O que nós ganhamos!

Integrando a linguagem com diversas origens de dados 

O LINQ (Language-Integrated Query – Linguagem Integrada de Consulta) é um conjunto de recursos que permite a realização de consultas diretamente em bases de dados, documentos XML, Estruturas de dados, Coleções de Objetos, etc. usando uma sintaxe parecida com a SQL.

Introduzido no .NETFW 3.5 (VS 2008) ela estende as capacidades de consulta SQL para as linguagens. Aplicando Patterns para consulta/atualização de dados. 

A arquitetura LINQ

O LINQ atua como uma “PONTE” entre o “MUNDO DOS OBJETOS” e o “MUNDO DOS DADOS”. O objetivo do LINQ é possibilitar consultas como um recurso de primeira classe nas linguagens da .NET e outras.

arquitetura_linq

A arquitetura do Linq pode suportar qualquer tipo de armazenamento de dados.

Na arquitetura também podemos visualizar as formas nas quais poderemos utilizar o LINQ.

  • LINQ to Objects
  • LINQ to DataSet
  • LINQ to SQL
  • LINQ to Entities
  • LINQ to XML

Visual Studio é Maior Produtividade 

Escreva código de acesso a dados diretamente no C#(3.0) , VB.net(9.0) ou outras linguagens

Verificação de sintaxe e de esquema em tempo de compilação

Suporte a ferramentas para criar consultas (Intelissense)

Não espere executar para saber se a consulta está correta, verificação em tempo de compilação. 

Aplicabilidade

O LINQ é aplicável a qualquer coleção que implemente a interface IEnumerable<T>, desta forma qualquer Collection e Array pode ser consultada usando LINQ.

Em resumo, qualquer classe que implementa a IEnumerable<T> pode ser consultada via LINQ.