I need to pass two parameters to a generic function that returns data from the database and select only a few specific columns to display in a 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;
}
For the query that I will perform, I do not need to pass Predicate
, I just need to pass Select
to return it:
PessoaId,
Login,
Senha,
UsuarioTipoId,
Descricao(UsuarioTipo),
PessoaTipoId,
Descricao(PessoaTipo).
If the User is an individual, display the fields:
NomeCompleto,
Apelido,
DataNascimento
but if it is a legal entity, display the fields:
RazaoSocial,
NomeFantasia,
DataAbertura
It's a rather complex expression. Is it possible to do it and how to pass it by parameter?
Below are the 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 DATAGRIDVIEW
UsuarioRepository UsuarioRepositorio = new UsuarioRepository();
dgUsuarios.DataSource = UsuarioRepositorio.GetAll();
I needed something like this (Passing Parameters):
dgPesquisar.DataSource = UsuarioRepositorio.GetAll(null, u => u.login, u.Senha, u.NOmeCompleto );