我必须使用条件表达式进行lambda查询。对于我的方法中签名中的一个或任何条件为真的赋值,此条件为AND。
我试试:
我的方法:
public UsuariosAcoesGrid ObterUsuariosAcoesBusca(
Int32 PageNumber,
Int32 PageSize,
Guid? AcaoUsuario,
DateTime? DataInicio,
DateTime? DataFinal,
Guid CodigoUsuario,
Guid cdUsuario)
我的查询
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);
在我的数据库中,我在SQL SERVER中有两行,其中AcaoUsuario ='SomeGuid'
但是当我执行上面的查询时,我得到了表格中的所有行。
任何人都可以帮助我吗?
非常感谢。