0

I have to do a lambda query with conditional expression. This conditional is AND for one or any conditional be true assign in signature in my method.

I try:

My Method:

public UsuariosAcoesGrid ObterUsuariosAcoesBusca(
    Int32 PageNumber, 
    Int32 PageSize, 
    Guid? AcaoUsuario, 
    DateTime? DataInicio, 
    DateTime? DataFinal, 
    Guid CodigoUsuario, 
    Guid cdUsuario)

My query

var query = (from UsuariosLogs in ctx.tb_Usuarios_Logs
             join Usuarios in ctx.tb_Usuarios on UsuariosLogs.idUsuario equals Usuarios.idUsuario
             join Menu in ctx.tb_Menu_Painel on UsuariosLogs.idMenu equals Menu.idMenu
             join ParametrosAcoes in ctx.tb_Param_AcoesUsuario on UsuariosLogs.idAcaoUsuario equals ParametrosAcoes.idAcaoUsuario
             where (
             Usuarios.cdUsuario == CodigoUsuario
             && (DataInicio != null && DataFinal != null) ? UsuariosLogs.dtLog >= DataInicio && UsuariosLogs.dtLog <= DataFinal : UsuariosLogs.dtLog != null
             && (AcaoUsuario != null) ? ParametrosAcoes.cdAcaoUsuario == AcaoUsuario : ParametrosAcoes.cdAcaoUsuario != null
             )
             select new
             {
                 CodUsuario = Usuarios.cdUsuario,
                 CodAcaoUsuario = ParametrosAcoes.cdAcaoUsuario,
                 Menu = Menu.lbMenu,
                 AcaoUsuario = ParametrosAcoes.lbAcaoUsuario,
                 DataLog = UsuariosLogs.dtLog,
                 Descricao = UsuariosLogs.lbDescricao,
                 Comando = UsuariosLogs.dsComando,
                 IdUsuario = Usuarios.idUsuario,
                 NomeUsuario = Usuarios.dsNome
             }).OrderByDescending(l => l.DataLog);

In my database, i have 2 lines in SQL SERVER with AcaoUsuario = 'SomeGuid'

But when i execute the query above, i get all lines in my table.

Can anyone help me ?

Thank's a lot.

Julio Soares
  • 101
  • 2

0 Answers0