Já sabemos que consultas LINQ podem retornar coleções de vários tipos, entre elas IQueryable. Essa interface herda diretamente de IEnumerable e, por isso, disponibiliza  alguns Extension Methods que, associados a utilização de Lambdas Expressions, facilitam muito a nossa vida no trabalho com querys LINQ. A idéia desta sequência de posts é demonstrar o uso de alguns desses Extension Methods na prática.

OBS 1: Vou publicando aos poucos, por isso, diariamente teremos novidades neste artigo.

OBS 2: Para os exemplos, utilizarei como source várias coleções de objetos, conforme mostra o código a seguir:

// Classe Pessoa
public class Pessoa
{
    public int ID { get; set; }
    public string Nome { get; set; }
    public int Idade { get; set; }
    public Sexo Sexo { get; set; }
    public List<Animal> Animais { get; set; }
}

// Enumerador para Sexo
public enum Sexo
{
    Masculino,
    Feminino
}

// Classe Animal
public class Animal
{
    public int ID { get; set; }
    public Especie Especie { get; set; }
    public string Nome { get; set; }
    public Pessoa Dono { get; set; }
}

// Enumerador para Especie
public enum Especie
{
    Cachorro,
    Gato,
    Piriquito
}

// Criando o array de Pessoas
Pessoa[] Pessoas =
{
    new Pessoa
    { ID=1, Nome="José", Idade=28, Sexo=Sexo.Masculino },
    new Pessoa
    { ID=2, Nome="Antonio", Idade=22, Sexo=Sexo.Masculino},
    new Pessoa
    { ID=3, Nome="Maria", Idade=20, Sexo=Sexo.Feminino },
    new Pessoa
    { ID=4, Nome="Fernanda", Idade=32, Sexo=Sexo.Feminino },
    new Pessoa
    { ID=5, Nome="João", Idade=32, Sexo=Sexo.Masculino }
};
Animal[] Animais = CriarArrayDeAnimais(Pessoas);
foreach (Pessoa pessoa in Pessoas)
    pessoa.Animais = Animais.Where(a => a.Dono.ID == pessoa.ID).ToList();

// Segundo array de Pessoas
Pessoa[] OutrasPessoas =
{
    new Pessoa
    { ID=6, Nome="Josefina", Idade=12, Sexo=Sexo.Feminino },
    new Pessoa
    { ID=7, Nome="Antonieta", Idade=25, Sexo=Sexo.Feminino },
    new Pessoa
    { ID=8, Nome="Mário", Idade=22, Sexo=Sexo.Masculino },
};

// Array de Animais
Animal[] Animais =
{
    new Animal
    { ID=1, Especie=Especie.Cachorro, Nome="Fred", Dono=Pessoas[0] },
    new Animal
    { ID=2, Especie=Especie.Cachorro, Nome="Billy", Dono=Pessoas[0] },
    new Animal
    { ID=3, Especie=Especie.Cachorro, Nome="Pandora", Dono=Pessoas[1] },
    new Animal
    { ID=4, Especie=Especie.Cachorro, Nome="Teny", Dono=Pessoas[1] },
    new Animal
    { ID=5, Especie=Especie.Cachorro, Nome="Cindy", Dono=Pessoas[1] },
    new Animal
    { ID=6, Especie=Especie.Piriquito, Nome="Crodô", Dono=Pessoas[2] },
    new Animal
    { ID=7, Especie=Especie.Piriquito, Nome="Frodo", Dono=Pessoas[2] },
};

Vamos lá, então!

Clique sobre o comando para ver detalhes:

Código fonte

O download de todos os códigos pode ser feito aqui.

Saiba mais: