Em programação não é incomum vermos listas com objetos de tipos distintos. Vamos considerar um cenário onde os usuários dos sistema são classificados como pessoa física e pessoa jurídica.
No código, temos uma classe Usuario e duas outras classes que herdam desta, PessoaFisica e PessoaJuridica.
public class Usuario
{
public string Email { get; set; }
public string Senha { get; set; }
}
public class PessoaFisica : Usuario
{
public string Nome { get; set; }
public string CPF { get; set; }
}
public class PessoaJuridica : Usuario
{
public string CNPJ { get; set; }
public string RazaoSocial { get; set; }
public string NomeFantasia { get; set; }
}
No código abaixo preencho uma lista de usuários contendo pessoa física e pessoa jurídica
List<Usuario> usuarios = new List<Usuario>
{
new PessoaFisica
{
Email = "pf@email.com",
Senha = "123",
Nome = "Pessoa fisica 1",
CPF = "057.246.413-48"
},
new PessoaJuridica
{
Email = "pj@email.com",
Senha = "123",
CNPJ="68.335.687/0001-50",
RazaoSocial = "Horda TI",
NomeFantasia = "Ninja Dev Space"
}
};
Para filtrar os elementos de uma lista por tipo, basta usar o método OfType. Este método encontra-se no namespace System.Linq
var pf = usuarios.OfType<PessoaFisica>();
var pj = usuarios.OfType<PessoaJuridica>();
Após a execução do código acima a variável pf será um IEnumerable<PessoaFisica> e pj um IEnumerable<PessoaJuridica>
Comments