var logView = (from ag in db.ARQUIVOGED
join aglv in db.ARQUIVOGEDLOGVIEW on ag.ID_ARQUIVO_GED equals aglv.ID_ARQUIVO_GED
join agdown in db.ARQUIVOGEDLOGDOWNLOAD on new { X = aglv.ID_ARQUIVO_GED, Y = aglv.ID_USUARIO } equals new { X = join agdown.ID_ARQUIVO_GED, Y = agdown.ID_USUARIO } into lfjvd
join epu in db.EMPRESAPORUSUARIO on aglv.ID_USUARIO equals epu.ID_USUARIO
join emp in db.EMPRESA on epu.ID_EMPRESA equals emp.ID_EMPRESA
join up in db.USUARIOPESSOA on aglv.ID_USUARIO equals up.ID_USUARIO
join pes in db.PESSOA on up.ID_PESSOA equals pes.ID_PESSOA
from lj in lfjvd.DefaultIfEmpty()
where
(dataVisualizacao != null ? EntityFunctions.TruncateTime(aglv.DT_VISUALIZACAO) == dataVisualizacao : true) &&
(dataPublicacao != null ? EntityFunctions.TruncateTime(ag.DT_CRIACAO) == dataPublicacao : true) &&
(idUsuario != null ? aglv.ID_USUARIO == idUsuario : true) &&
(lstPreenchido != false ? lstIdsUsuariosEmpres.Contains(aglv.ID_USUARIO) : true) &&
//THIS IS IGNORED///////////////////////////////////////////////////////////
--> (nomeArquivo != string.Empty ? ag.DS_ARQUIVO.Contains(nomeArquivo) : true) ////////////////////////////////////////////////////////////////
select new RetornoLogViewGED
{
NM_PESSOA = pes.NM_PESSOA,
NU_CPF = pes.NU_CPF,
REVENDA = emp.NM_FANTASIA,
NOME_ARQUIVO = ag.DS_ARQUIVO,
DT_VISUALIZACAO = aglv.DT_VISUALIZACAO,
DT_CRIACAO = ag.DT_CRIACAO,
DT_DOWNLOAD = lj.DT_VISUALIZACAO
});
但是,当我在变量“nomeArquivo”中发送一个值以在基础上寻找一个术语时,他会忽略而不只是应用这个过滤器。连接顺序有问题吗?还是Where的顺序?例如变量“nomeArquivo”的值是“lion”,因为只有当这个变量的值不为空时才会执行条件(String.Empty)
有人可以帮我弄这个吗?或者经历过类似的事情?
已经很感激了!