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:
- All
- Any
- AsEnumerable
- Average
- Concat
- Contains
- Count
- Distinct
- ElementAt
- ElementAtOrDefault
- Except
- First
- FirstOrDefault
- GroupBy
- GroupJoin
- Intersect
- Join
- Last
- LastOrDefault
- LongCount
- Max
- Min
- OrderBy
- OrderByDescending
- Reverse
- Select
- SelectMany
- SequenceEqual
- Single
- SingleOrDefault
- Skip
- SkipWhile
- Sum
- Take
- TakeWhile
- ThenBy
- ThenByDescending
- ToArray
- ToDictionary
- ToList
- Union
- Where
Código fonte
O download de todos os códigos pode ser feito aqui.
Saiba mais:




Extension Methods no C# « Fernando Ottoboni
Fev 18, 2011 @ 17:17:42