C# lambda表达式中的条件where
我必须用条件表达式进行lambda查询。在我的方法中,此条件为且对于一个或任何条件为true的签名赋值 我尝试: 我的方法:C# lambda表达式中的条件where,c#,linq,C#,Linq,我必须用条件表达式进行lambda查询。在我的方法中,此条件为且对于一个或任何条件为true的签名赋值 我尝试: 我的方法: public UsuariosAcoesGrid ObterUsuariosAcoesBusca( Int32 PageNumber, Int32 PageSize, Guid? AcaoUsuario, DateTime? DataInicio, DateTime? DataFinal, Guid CodigoU
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);
var query=(来自ctx.tb\u Usuarios\u日志中的UsuariosLogs
在Usuarios slogs.idUsuario等于Usuarios.idUsuario上的ctx.tb_Usuarios中加入Usuarios
在UsuariosLogs.idMenu等于Menu.idMenu上的ctx.tb\u Menu\u Painel中加入菜单
在usuarios上的ctx.tb_Param_AcoesUsuario中加入参数集。idacausuario等于参数集。idacausuario
在哪里(
Usuarios.cdUsuario==CodigoUsuario
&&(DataInicio!=null&&DataFinal!=null)?UsuariosLogs.dtLog>=DataInicio&&UsuariosLogs.dtLog l.DataLog);
在我的数据库中,我在SQL SERVER中有两行代码,其中AcaoUsuario='SomeGuid'
但是当我执行上面的查询时,我得到了表中的所有行
有人能帮我吗
非常感谢。您可能需要在条件表达式周围加上一些括号。
?:
运算符的优先级非常低。完全同意@MichaelLiu-将所有?:代码放在括号中,看看您得到了什么。如果新代码仍然不起作用,请用新代码更新您的问题。这是EF还是Linq2Sql?@Michael Liu,Thanks太多了。它现在的工作!!!…不,解决方案是根本不使用这个结构。添加谓词。所有这些检查都会导致查询不必要的繁重。