有条件的lambda表达式

时间:2017-01-19 15:47:04

标签: c# linq

我必须使用条件表达式进行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'

但是当我执行上面的查询时,我得到了表格中的所有行。

任何人都可以帮助我吗?

非常感谢。

0 个答案:

没有答案