none
Como montar uma expressão LAMBDA e passá-la por parâmetro para uma função Genérica - C# - Entity Framework - Windows Forms RRS feed

  • Pergunta

  • Olá amigos do fórum!

    Estou aprendendo Lambda, mas estou com muita dificuldade. Preciso passar dois parâmetros para uma função genérica para retornar dados do banco e selecionar apenas algumas colunas específicas para exibir em um DataGridView.

     public List<TEntity> GetAll(Expression<Func<TEntity, bool>> Predicate, Expression<Func<TEntity, TEntity>> Select)
            {
                var query = Context.Set<TEntity>()
                    .Where(Predicate)
                    .Select(Select).ToList();
                return query;
            }

    Para a consulta que irei realizar, não preciso passar um Predicate. Preciso apenas passar um Select que me retorne PessoaId, Login, Senha,  UsuarioTipoId, Descricao(UsuarioTipo), PessoaTipoId, Descricao(PessoaTipo). Se o Usuário for pessoa física, exibir os campos NomeCompleto, Apelido e DataNascimento, mas se ele for uma pessoa jurídica, exibir os campos RazaoSocial, NomeFantasia e DataAbertura.

    É uma expressão um pouco complexa. É possível de ser feita e como Passá-la por parâmetro?

    Abaixo, seguem as classes:

    //CLASSES MODEL
    public class PessoaModel
        {
            public int PessoaId { get; set; }
            public int PessoaTipoId { get; set; }
            public DateTime DataInclusao { get; set; }
    
            public virtual PessoaTipoModel PessoaTipo { get; set; }
            public virtual PessoaFisicaModel PessoaFisica { get; set; }
            public virtual PessoaJuridicaModel PessoaJuridica { get; set; }
        }
    
     public class UsuarioModel : PessoaModel
        {
            public string Login { get; set; }
            public string Senha { get; set; }
            public int UsuarioTipoId { get; set; }
    
            public virtual UsuarioTipoModel UsuarioTipo { get; set; }
    
        }
    
     public class PessoaFisicaModel
        {
            public int PessoaId { get; set; }
            public string NomeCompleto { get; set; }
            public string Apelido { get; set; }
            public DateTime? DataNascimento { get; set; }
            public string CPF { get; set; }
    
            public virtual PessoaModel Pessoa { get; set; }
    
        }
    
     public class PessoaJuridicaModel
        {
            public int PessoaId { get; set; }
            public string RazaoSocial { get; set; }
            public string NomeFantasia { get; set; }
            public DateTime? DataAbertura { get; set; }
            public string CNPJ { get; set; }
    
            public virtual PessoaModel Pessoa { get; set; }
        }
    //CARREGAMENTO DO DATAGRIDVIEWUsuarioRepository UsuarioRepositorio = new UsuarioRepository();
                dgUsuarios.DataSource = UsuarioRepositorio.GetAll();




    • Editado Jalber Romano segunda-feira, 7 de novembro de 2016 08:22
    domingo, 6 de novembro de 2016 23:57

Respostas

Todas as Respostas