Share via


Utilizando IEnumerable


                Olá pessoal, hoje eu vou falar e mostrar um pouco sobre como pegar os valores de um IEnumerable em forma de propriedade. Além de mostrar as várias maneiras de utilizar o retorno desse tipo.

                O grande problema hoje é a forma de pegar os dados, a melhor maneira de pegar os dados é utilizando propriedades. Mas quando um método retorna o IEnumerable puro, fica difícil pegar as propriedades, isso porque se você clicar o ponto não aparece as propriedades do retorno.

                O IEnumerable pode ser retornado de forma pura/simples e personalizado.  A forma personalizada é necessário criar uma classe com Get e Set para que funcione. Veja a listagem 1.

Listagem 1 – Exemplos de IEnumerable

Primeiro exemplo:

- public IEnumerable<Usuario> getUsuario();

Segundo exemplo:

- public IEnumerable getUsuario();

                Os dois exemplos mostram que os nomes dos métodos são iguais, mas os retornos são diferentes. Diferentes porque o primeiro possui o retorno com a classe de usuário e o segundo só possui o IEnumerable. O primeiro exemplo mostra que existe uma classe de usuário que vai ser preenchida e o retorno possui propriedades dessa classe. O segundo exemplo, não mostra as propriedades da classe, isso porque não tem classe retornada junto do IEnumerable. Se quiser pegar as propriedades,  é necessário utilizar um getType e tudo mais, mostrado na listagem 3.

                O IEnumerable pode também preencher um GridView sem qualquer problema. Basta fazer o datasource e depois o databind(). Isso não é problema pra quem utiliza esse retorno para preencher GridView.

                Um método simples utilizando o IEnumerable com propriedades está na listagem 2.

Listagem 2 – IEnumerable com propriedades

public IEnumerable<Usuario> GetUsuarios()
 
{
 
return db.Usuarios.AsEnumerable();
 
} 
 
public class  Usuario
 
{
 
[Key]
 
public Int32 Id { get; set; }
 
public String Nome { get; set; }
 
}

                Note que a listagem 2 mostra duas classes, uma com o método buscando no banco de dados e outra classe com propriedades Id e Nome. Essa junção é uma “mágica” que o framework .NET faz e o desenvolvedor não precisa se preocupar.

                O próximo exemplo mostra a listagem 3 que, o retorno não tem propriedades.

Listagem 3 – Retornando IEnumerable puro

public IEnumerable GetUsuarios()
 
{
 
return db.Usuarios.AsEnumerable();
}
 
//Consumindo o método
 
IEnumerable _retornoIEnumerable = new  classe().GetUsuarios();
 
foreach (var item in _retornoIEnumerable)
 
{
 
string Id = item.GetType().GetProperty("Id").GetValue(item, null).ToString();
 
string Nome = item.GetType().GetProperty("Nome").GetValue(item, null).ToString();
 
}

                Note que na listagem 3, o método retorna apenas IEnumerable. Logo após o método, existe o consumo pegando os valores como propriedades. Basta fazer um Foreach e dentro dele tem o GetType(), nome da propriedade GetProperty(“Id”) e depois o valor usando o GetValue. Dessa maneira você consegue pegar o valor e armazenar em variáveis dentro do Foreach.

                É lógico que a maioria dos desenvolvedores utilizam o IEnumerable da forma mostrada na listagem 2, mas quando não existe propriedades e não tem jeito de criá-las, existe outra maneira de pegar os valores retornados no seu select mostrado na listagem 3.

                Esse foi um artigo ou dica bem rápida para que entenda e resolva sua dúvida referente a utilização de IEnumerable. Espero que tenha gostado e qualquer dúvida pode entrar em contato pelo site www.mauriciojunior.org

This article was originally written by:

Maurício Júnior
MCP, MCAD, MVP Microsoft
www.mauriciojunior.org