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.