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 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 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.